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]