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. > } > > } > > > > >
