david-streamlio opened a new issue, #101:
URL: https://github.com/apache/pulsar-connectors/issues/101

   ## Description
   
   The HBase sink very likely cannot perform any table operation in a current 
build — it throws `java.lang.NoClassDefFoundError: 
io/opentelemetry/semconv/SemanticAttributes` on its first HBase call. Found 
while attempting to add integration coverage for the module (#51); the module 
previously had only config + mock tests, so this was never exercised against a 
real HBase client path.
   
   ## Root cause — verified
   
   - The shared version catalog pins `opentelemetry-semconv = "1.37.0"` 
(`gradle/libs.versions.toml:46`).
   - `hbase-client` 2.6.4 requests `opentelemetry-semconv:1.29.0-alpha`, but 
the enforced platform **force-upgrades** it to 1.37.0 on 
`:hbase:runtimeClasspath`:
     ```
     io.opentelemetry.semconv:opentelemetry-semconv:1.29.0-alpha -> 1.37.0
     ```
   - `SemanticAttributes` was **removed** from semconv after the ~1.30 line. 
Confirmed against the resolved jar:
     ```
     opentelemetry-semconv-1.37.0.jar: SemanticAttributes.class  ->  0 
occurrences (removed)
     ```
   - HBase's client references `io.opentelemetry.semconv.SemanticAttributes` 
(via `HBaseSemanticAttributes`) while building a trace span on **every** table 
operation, so the missing class surfaces as `NoClassDefFoundError` on the first 
`put`/`get`/`createTable`.
   
   This is the same class of defect as the Aerospike (#97) and Canal (#99) 
findings: a connector that compiles and packages fine but is non-functional at 
runtime because the enforced platform resolves a dependency to a version its 
client library cannot use.
   
   ## Suggested fix
   
   Scope semconv back to the version HBase needs, for this module:
   
   ```kotlin
   // hbase/build.gradle.kts
   pulsarConnectorsDependencies {
       exclude(libs.opentelemetry.semconv)
   }
   dependencies {
       
implementation("io.opentelemetry.semconv:opentelemetry-semconv:1.29.0-alpha")
   }
   ```
   
   ## Caveat on verification
   
   This is proven on the module's **resolved dependencies** (a standalone probe 
with the 2.6.4 client threw `NoClassDefFoundError` under 1.37.0 and succeeded 
under 1.29.0-alpha). It has **not** been verified against NAR classloading in a 
live Pulsar broker — a child-first NAR classloader would bundle whatever 
version the build resolves (1.37.0), so the runtime behavior should be 
confirmed there too. Either way the build resolves a semconv version HBase 
cannot use, so this needs fixing regardless.
   
   ## Related
   
   Integration test for this module (#51) is blocked on environment issues 
(HBase container routing / mini-cluster protobuf conflict) independent of this 
bug — see that issue. The semconv fix is separable and worth landing on its own.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to