Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable shading of Apache HTTP Components/Core libs #959

Merged
merged 3 commits into from
Nov 6, 2018

Conversation

rnorth
Copy link
Member

@rnorth rnorth commented Nov 6, 2018

Fixes #958

TODO:

  • Manually verify using jitpack build
  • Observe JAR shading test results

TODO later:

@rnorth rnorth requested a review from bsideup November 6, 2018 09:06
@rnorth rnorth requested a review from kiview as a code owner November 6, 2018 09:06
Copy link
Member

@bsideup bsideup left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Let's wait for the CI status, we have JAR shading tests, they will detect if we use it

@rnorth
Copy link
Member Author

rnorth commented Nov 6, 2018

Very good point @bsideup - those tests will be helpful.

@rnorth rnorth merged commit 524bd10 into master Nov 6, 2018
@delete-merged-branch delete-merged-branch bot deleted the disable-apachehttp-shading branch November 6, 2018 10:26
@rnorth rnorth mentioned this pull request Nov 7, 2018
rnorth added a commit that referenced this pull request Nov 7, 2018
FYI @dadoonet, relating to #958 

As httpcore is a transitive dependency that we don't want to conflict with user's libs, we unfortunately need to:

* roll back #959, where we disabled the shading of this module. As is, we're at risk of internal breakage when transitive deps clash.
* in turn, stop exposing `HttpHost` in our public API. We should take a general stance of keeping our public APIs free of transitive deps (especially shaded ones)

The API method in ElasticsearchContainer will thus change, from:
```java
public HttpHost getHost()
```
to:
```java
public String getHttpHostAddress()
```

Usage in turn changes from:
```java
RestClient client = RestClient.builder(container.getHost()).build();
```
to the slightly more verbose but equivalent:
```java
RestClient client = RestClient.builder(HttpHost.create(container.getHttpHostAddress())).build();
```

@bsideup, @kiview and I have discussed at length and concluded that this is the only approach that we're comfortable with - despite the fact that this raises an unfortunate breaking change in the API of the Elasticsearch module, which we reluctantly have to do.

We are sorry that we did not catch this particular issue at PR stage - we're going to upgrade our static analysis to guard against inadvertent leakage of shaded dependencies. In the longer term we also, obviously, wish to reduce the weight of our dependency chain, both unshaded and shaded, so that this does not happen again.

We intend for this change to go out as 1.10.1.

I hope this is OK with you @dadoonet - our apologies again for not catching this before release.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants