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.
HiveTestServiceasks 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 totransport.layered). Its innerTServerSocketKeepAliveoverridesTServerTransport.accept(), which isfinalbelow 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 thehudi-hive-synctests jar on a classpath that useshive-execwith thecoreclassifier gets no thrift from Hive at all, soTServerTransportresolves from libthrift and the class fails verification, or fails to findTFramedTransport$Factoryonce libthrift is raised to 0.14.The test dependency can move to the existing
hive.libthrift.versionproperty, which already models the thrift the Hive client is built against, and the import can point at the package 0.14 moved it to.