Skip to content

is it possible to shade the common dependency of the hitsdb-client? #102

Open
@xiaowing

Description

@xiaowing

比如项目中如果引用了某个库且该库依赖于 org.apache.httpcomponents.httpcore-4.4.11,但是当前的hitsdb-client 依赖于 4.4.6

这种情况下 在创建客户端时就会报错:

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
    at org.apache.http.impl.nio.codecs.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:53)
    at org.apache.http.impl.nio.codecs.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:57)
    at org.apache.http.impl.nio.codecs.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:47)
    at org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionFactory.<init>(ManagedNHttpClientConnectionFactory.java:75)
    at org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionFactory.<init>(ManagedNHttpClientConnectionFactory.java:83)
    at org.apache.http.impl.nio.conn.ManagedNHttpClientConnectionFactory.<clinit>(ManagedNHttpClientConnectionFactory.java:64)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingNHttpClientConnectionManager.java:581)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.<init>(PoolingNHttpClientConnectionManager.java:165)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.<init>(PoolingNHttpClientConnectionManager.java:149)
    at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.<init>(PoolingNHttpClientConnectionManager.java:121)
    at com.aliyun.hitsdb.client.http.HttpClientFactory.createHttpClient(HttpClientFactory.java:135)
    at com.aliyun.hitsdb.client.TSDBClient.<init>(TSDBClient.java:70)
    at com.aliyun.hitsdb.client.TSDBClientFactory.connect(TSDBClientFactory.java:14)

虽然可以通过 exclusion 来解决这样的问题,但是用户体验是比较差的。最好是能在这种情况下,不要报错。这个 Issue 就希望讨论下是不是可以将 TSDB SDK 的依赖进行 shaded ,以便于跟用户其它部分的依赖相隔离。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions