Uploaded image for project: 'Beam'
  1. Beam
  2. BEAM-13782

NullPointerException in use of avro deserialization context due to improper concurrent use

Details

    • Bug
    • Status: Resolved
    • P3
    • Resolution: Fixed
    • 2.35.0
    • 2.37.0
    • sdk-java-core
    • None

    Description

      Discussed here: https://lists.apache.org/thread/rcto0yggqygfk0ljnd8mg69h83rhvvs5
       

       
      We (Spotify) are experiencing flaky tests on beam 2.35.0 as a result of NullPointerExceptions during pipeline construction. 
       
      Stacktrace [1]. Root cause appears to be multiple threads accessing DeserializationContext from ValueProvider.Deserializer.deserialize [2] which, according to the javadocs "is guaranteed to only be used from single-threaded context" [3]
       
      In the context internals, the mutable _currentType is set [4] then accessed a few lines later [5], but in a multithreaded situation the writes clobber each other and a call to next() can fail with a NPE.
       
      I think synchronizing on ctxt in [2] should be sufficient to avoid this issue, but I'm not sure if the NPEs are due to beam misuse or something on the jackson side that should be changed.
       
      Failing (scala) test here, scalatest runs tests in parallel:
      https://gist.github.com/kellen/124185463c16a66167a7fa704147c510#file-fail-scala
       
      Test stacktrace:
      https://gist.github.com/kellen/124185463c16a66167a7fa704147c510#file-test_stacktrace-txt
       
      [1] https://gist.github.com/kellen/124185463c16a66167a7fa704147c510#file-stacktrace-txt
      [2] https://github.com/apache/beam/blob/master/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java#L359
      [3] https://github.com/joansmith/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java#L36
       [4] https://github.com/joansmith/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java#L652
      [5] https://github.com/joansmith/jackson-databind/blob/master/src/main/java/com/fasterxml/jackson/databind/DeserializationContext.java#L656

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              kellendye Kellen Dye
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 40m
                  40m