Here it it the issue
https://issues.apache.org/jira/browse/BOOKKEEPER-959

I will share some code soon

I'm working on a SASL implementation similar to ZooKeeper SASL
implementation, in order to support oth MD5 and GSSAPI/Kerberos
authentication


2016-10-20 0:37 GMT+02:00 Matteo Merli <[email protected]>:
> Hi Enrico,
>
> yes the shading of protobuf is a bit of a problem. A possible solution would
> be to include the implementation in BookKeeper itself, if it's of general
> interest.
>
> Another approach, could be to release both shaded and unshaded jars for
> bookkeeper-server artifact.

I think we'd better to continue to shade protobuf, as it is a common
library and introduces compatibility problems. (we have just upgraded
to 2.6 which was compatibile only on the wire with previuos version)

>
>
> Matteo
>
>
> On Wednesday, October 19, 2016 9:41 AM, Sijie Guo <[email protected]> wrote:
>
>
> I think we also need to think a solution on how to prevent this kind of
> shade behavior. It is not good to expose shade classes to any public
> interface.

We should mark classes which are really part of the "Public API" (for
instance with annotations) and then we can develop/use some tool to
check the byte code


>
> - Sijie
>
> On Wed, Oct 19, 2016 at 9:40 AM, Sijie Guo <[email protected]> wrote:
>
> Ah, good catch, Enrico.
>
> It is really bad for this behavior. I think it should be fine to break the
> code backward compatibility for this interface.
>
> - Sijie
>
> On Wed, Oct 19, 2016 at 8:02 AM, Enrico Olivelli <[email protected]>
> wrote:
>
> Hi,
> I'm going to implement a custom AuthProvider for BookKeeper, I have
> come to a showstopper:
> ClientAuthProvider.Factory depends on Protobuf ExtensionRegistry,
> which is shaded inside the BooKeeper JAR
>
> A custom provider will look like the code below, this is not good,
> because my code needs to depend on an "hidden" dependency of BK.
>
> I can file a JIRA and propose a fix, but any fix need to break
> compatibilty with existing custom Providers (But I assume that no
> implemention can actually exist, outside a fork of BookKeeper)
>
> What do you think ?
>
> This is an example
>
> public class CustomProvider implements ClientAuthProvider.Factory {
>
>     @Override
>     public void init(ClientConfiguration cc,
> bk-shade.com.google.protobuf.E xtensionRegistry er) throws IOException
> {
>         throw new UnsupportedOperationException( "Not supported yet.");
> //To change body of generated methods, choose Tools | Templates.
>     }
>
>     @Override
>     public ClientAuthProvider newProvider(InetSocketAddress isa,
> BookkeeperInternalCallbacks.Ge nericCallback<Void> gc) {
>         throw new UnsupportedOperationException( "Not supported yet.");
> //To change body of generated methods, choose Tools | Templates.
>     }
>
>     @Override
>     public String getPluginName() {
>         throw new UnsupportedOperationException( "Not supported yet.");
> //To change body of generated methods, choose Tools | Templates.
>     }
>
> }
>
>
>
>
>

Reply via email to