Yup, I totally get it, Kevin.
I guess I was trying to get a bit more specific.
When we shade in dependencies, we relocate most of them. slf4j is one we
can't relocate because it would stop working (because it'd think the
necessary classes to start it wouldn't be present).
I guess that's really my question (I just needed to think about it
more): what artifacts should we not include when we shade? Would your
life have been better if we expected slf4j-api to be provided and not
shaded?
I think we have a lot of room for improvement -- my only concern is to
make changes with specific reasons behind them and then document what is
available and the scenarios in which you want to use the resulting
artifacts.
If you want, a CALCITE JIRA issue tagged with fixVersion=avatica-1.8.0
and whatever info we decide on here would be very helpful too. Thanks!
Kevin Risden wrote:
For Solr, the transitive dependencies are excluded by default. When there
are multiple SLF4j bindings, Solr errors out due to to multiple bindings
being loaded by different classloaders. I was surprised to notice that
Avatica server pulls in Avatica which in turns pulls in the dependencies
with no way to exclude them especially SLF4j since its not shaded. I'm not
sure there is a way to shade SLF4j as the comments mentioned in CALCITE-669.
I think the Avatica jar with dependencies is really useful since it is one
jar that gets used by the client. However for Avatica server, there are
cases where you want to embed the server in another project and will need
to exclude SLF4j due to versions or only wanting to have one version on the
classpath.
If there is another way to achieve this that would be great, but having the
Avatica server dependency include all the dependencies by default doesn't
seem like the right solution to me.
Kevin Risden
Apache Lucene/Solr Committer
Hadoop and Search Tech Lead | Avalon Consulting, LLC
<http://www.avalonconsult.com/>
M: 732 213 8417
LinkedIn<http://www.linkedin.com/company/avalon-consulting-llc> | Google+
<http://www.google.com/+AvalonConsultingLLC> | Twitter
<https://twitter.com/avalonconsult>
-------------------------------------------------------------------------------------------------------------
This message (including any attachments) contains confidential information
intended for a specific individual and purpose, and is protected by law. If
you are not the intended recipient, you should delete this message. Any
disclosure, copying, or distribution of this message, or the taking of any
action based on it, is strictly prohibited.
On Mon, May 2, 2016 at 8:42 AM, Josh Elser<[email protected]> wrote:
Anything is possible :)
I'd like to see a plan put forth on what we should do (more about the
"why" behind those changes). Would you be willing to share this info?
Kevin Risden wrote:
While trying to integrate Avatica server into Solr, I found that the
Avatica dependency has all the jars included. I'm not able to exclude
SLF4j
or other dependencies based on exclusions.
This issue wasn't as bad before CALCITE-669 when there was the switch to
SLF4j.
Would it be possible to release Avatica without all the dependencies
included or make two dependencies (one shaded and the other not)?
Kevin Risden