snowflakedb/snowflake-jdbc

SNOW-1042432: Do not use com.amazonaws classes in core SF classes

Closed this issue · 5 comments

What is the current behavior?

I was giving a try to the snowflake-jdbc-thin jar and it works fine. Thanks for that. Although I wanted to exclude some unnecessary dependencies for my application like:

  • com.amazonaws
  • com.google.cloud
  • com.microsoft.azure

I could exclude all those except com.amazonaws:aws-java-sdk-core because net.snowflake.client.core.HttpClientSettingsKey references com.amazonaws.Protocol and I got the exception java.lang.NoClassDefFoundError: com/amazonaws/Protocol

What is the desired behavior?

I would like my application to work even if I exclude all the above dependencies. I think this could be achieved by avoiding the use of com.amazonaws in core classes like net.snowflake.client.core.HttpClientSettingsKey

How would this improve snowflake-jdbc?

This would benefit users trying to create smaller apps, but also allow future modularization of snowflake-jdbc library

Thank you @jtjeferreira for the PR. I left one comment there.

The PR is a step in the right direction, but it won't solve all the problems. We are still using the com.amazonaws.http.apache.SdkProxyRoutePlanner in the core package

We are still using the com.amazonaws.http.apache.SdkProxyRoutePlanner in the core package

Should I make a copy of that class (keeping the copyright header)?

We should think about backward compatibility of our public classes - checkout my comments in PR

for SdkProxyRoutePlanner it needs more tests and planning to make it optional - it could be done but I would not put it in this PR and issue

Thank you @jtjeferreira for the contribution, the change will be included in the next release of snowflake-jdbc

Thank you @jtjeferreira for the contribution, the change will be included in the next release of snowflake-jdbc

I tried 3.15.0 and it works like a charm... Thanks.