Kellen Dye created BEAM-13782:
---------------------------------

             Summary: NPE 
                 Key: BEAM-13782
                 URL: https://issues.apache.org/jira/browse/BEAM-13782
             Project: Beam
          Issue Type: Bug
          Components: sdk-java-core
    Affects Versions: 2.35.0
            Reporter: Kellen Dye


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]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to