[jira] [Created] (FLINK-16686) [State TTL] Make user class loader available in native RocksDB compaction thread

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-16686) [State TTL] Make user class loader available in native RocksDB compaction thread

Shang Yuanchun (Jira)
Andrey Zagrebin created FLINK-16686:
---------------------------------------

             Summary: [State TTL] Make user class loader available in native RocksDB compaction thread
                 Key: FLINK-16686
                 URL: https://issues.apache.org/jira/browse/FLINK-16686
             Project: Flink
          Issue Type: Bug
          Components: Runtime / State Backends
    Affects Versions: 1.8.0
            Reporter: Andrey Zagrebin


The issue is initially reported [here|https://stackoverflow.com/questions/60745711/flink-kryo-serializer-because-chill-serializer-couldnt-be-found].

The problem is that the java code of Flink compaction filter is called from RocksDB native C++ code. It is called in the context of the native compaction thread. RocksDB has utilities to create java Thread context for the Flink java callback. Presumably, the Java thread context class loader is not set at all and if it is queried then it produces NullPointerException.

The provided report enabled a list state with TTL. The compaction filter has to deserialise elements to check expiration. The deserialiser relies on Kryo which queries the thread context class loader which is expected to be the user class loader of the task but turns out to be null.

We should investigate how to pass the user class loader to the compaction thread of the list state with TTL.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)