Skip to content

HiveTestService cannot load under any single libthrift version #19829

Description

@yihua

HiveTestService asks for two things no single libthrift version provides.

It imports org.apache.thrift.transport.TFramedTransport, which exists only below 0.14 (0.14 moved it to transport.layered). Its inner TServerSocketKeepAlive overrides TServerTransport.accept(), which is final below 0.14 and only overridable from 0.14 on. There is no method overridable in both generations either: TServerSocket.acceptImpl() exists only below 0.14, accept() only from 0.14.

The build does not hit this because it compiles and runs these tests against the full hive-exec, which bundles a 0.14-era thrift transport package at the plain path. Anything consuming the hudi-hive-sync tests jar on a classpath that uses hive-exec with the core classifier gets no thrift from Hive at all, so TServerTransport resolves from libthrift and the class fails verification, or fails to find TFramedTransport$Factory once libthrift is raised to 0.14.

The test dependency can move to the existing hive.libthrift.version property, which already models the thrift the Hive client is built against, and the import can point at the package 0.14 moved it to.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions