Conversation
|
Accumulo-Pull-Requests #39 FAILURE |
|
@ctubbsii I meant to do something about |
|
Accumulo-Pull-Requests #40 FAILURE |
|
Accumulo-Pull-Requests #41 SUCCESS |
|
@keith-turner Moving it to another package makes sense to me. It's not intended to be public API. |
|
Accumulo-Pull-Requests #42 SUCCESS |
There was a problem hiding this comment.
I can't say that I love the name "TabletID". Maybe TableRowRange?
There was a problem hiding this comment.
Interface and methods need javadoc.
Not a fan of TabletID either, but it does make sense (it uniquely identifies a Tablet). TabletIdentifier? I dunno.
There was a problem hiding this comment.
I don't really like TabletID or TableRowRange that much. Personally I would prefer TabletID because its shorter.
There was a problem hiding this comment.
I would like to hear more suggestions.
|
Pull looks good. Thanks for putting in the tedious work to clarify the API. |
There was a problem hiding this comment.
Can this be clarified to include package-protected as that's what we've been going on to date?
There was a problem hiding this comment.
I didn't think package-protected had been included to date. has it?
There was a problem hiding this comment.
I thought you were the one who argued that package-protected still allows users to access the class/methods/whatever. Maybe I'm misremembering things? Anything not private == fair-game is the assumption I've been operating under at least.
There was a problem hiding this comment.
If I did then past-me was wrong. :)
package-protected stuff (meaning java members with no access modifier, just to make sure we're on the same page) is only accessible if downstream folks make classes in our package space. IMHO that's a party foul and folks should expect such activity to be unsupported by us.
There was a problem hiding this comment.
Haha, yeah, I remember having that same reaction of "really?", but who knows. It wouldn't be the first weird thing I dreamed up. Since you guys took the time to clarify this, let's try to make this as bullet-proof as possible. Sounds like package-protected should be mentioned with private as being inaccessible.
There was a problem hiding this comment.
The only potential drawback I can think of is making the stmt so long that no one reads its
I think this is one time where it benefits us to be as specific as possible (see how often we had these "oops" moments already, and that Sean and I didn't know which was correct).
I have heard @ctubbsii mention that we build sealed jars that would prevent users from doing this.
Sealed jars are only relevant if the user downloads binary artifacts from us, not from users building the code themselves, no?
There was a problem hiding this comment.
Sealed jars are only relevant if the user downloads binary artifacts from us
I have no idea. If someone is using Accumulo's maven pom to build, I am not sure under what circumstances it seals. Someone could create jars w/o using the pom I suppose.
There was a problem hiding this comment.
I didn't think we sealed the jars by default but instead during the apache-release profile. I could be mistaken though.
There was a problem hiding this comment.
Thanks, Keith. Also, sorry all for confusion in using the wrong terminology. For some reason I kept thinking package-private was called package-protected.
|
Overall this looks pretty good, but needs a little bit of touch up still. Nice work Keith and Christopher, this took some doing. Some general thoughts:
|
I know of somebody working with the crypto stuff, I'll reach out and make sure this gets noticed. |
|
Accumulo-Pull-Requests #44 FAILURE |
There was a problem hiding this comment.
Fixed in 2f5e415. How does that look? Javadoc look good?
The fix looks great. I don't think we need since or quite as verbose a javadoc here since it's already contained (and better worded) in the DelegationToken interface
|
Accumulo-Pull-Requests #45 FAILURE |
|
Accumulo-Pull-Requests #46 FAILURE |
|
Accumulo-Pull-Requests #50 SUCCESS |
|
@joshelser Regarding what to do about the crypto package... that stuff is still marked as experimental, and some of it is still incomplete for full on-disk encryption (ACCUMULO-981), so whatever we do, I think for now, it should not be moved into the public API, because it may require unstable API changes to finish that work. |
|
If we do move it to the public API, it would need to be accompanied with a Beta annotation or something similar. |
That is a very good point. Putting something marked as experimental into public API would be precedent setting. I would agree with you that it should not be added until it is actually capable of performing complete encryption of Accumulo data. |
That is a good point. I will wait and see if there are any other comments on this. Moving it and removing the exception from the README would be nice. |
|
Accumulo-Pull-Requests #53 SUCCESS |
|
Said it in irc, but, for the record, I'm +1 with these changes + no crypto stuff in public API. |
Also +1
Same, at least for now, until it's 100% feature complete and no longer experimental, because until that time, we can't really make strong API guarantees about it. I also don't see the sense in moving it, because it'd unnecessarily disrupt those taking advantage of it today as an experimental feature. |
Use plugin to check for API problems
The following changes were made. * Fix API problems with IsolatedScanner * Deprecated public inner class in ClientSiderIteratorScanner that was not intended to be in public API * ACCUMULO-3488 Deprecated KeyExtent from public API * Deprecated use of Property in ClientConfiguration * deprecated ZooKeeperInstance.lookupIntanceName(ZooCache, UUID) * deprecated IteratorUtil.getProperty(IteratorScope) * deprecated class ComparableBytes * ACCUMULO-3724 moved DelegationToken and AuthenticationTokenIdentifier out of public API * deprecated getTabletLocator() in both AbstractInputFormat classes * deprecated getAccumuloConfiguration() in both AccumuloFileOutputFormat classes * deperecated and moved VisibilityConstraint * updated README to accurately communicate Accumulo's API. Update APILyzer config to enforce ACCUMULO-3720 * moved Credentials from core.security to core.client.impl
569dee5 to
0002c6f
Compare
|
I rebased on master and squished most of the commits. After rebasing on master, APILyzer found some new problems. |
|
Accumulo-Pull-Requests #55 FAILURE |
|
Accumulo-Pull-Requests #62 SUCCESS |
|
Newest changes look ok too. A few are a little confusing (notably (re)introducing Also, do we want all the members on AccumuloInputSplit to be private and not package-private? |
Well I think some of the public members of AccumuloInputSplit used to be public methods if RangeInputSplit. I think some public members of AccumuloInputSplit were not intened to be in public API, but end up there because RangeInputSplit extends AccumuloInputSplit. I think public API types extending impl types is nothing but trouble. I think another issue needs to be opened. I think the map reduce public API is a mess. Too much of the implementation is in the API, makes it very hard to add features. |
|
These changes were merged |
This pull request attempts to clarify what the Accumulo API is. The existing API statement does not include all types that a user would realistically need to use. A new API statement is proposed in 2f7d095.
This pull request also prunes (via deprecation) things from the API that were not intended to be in the API, but ended up there. For example parts of the API that referenced non API types and as a result may not be stable were deprecated.
I am requesting this review on GH instead of ReviewBoard because I thought it would be much easier to review the commits in this PR individually rather than squasing them for RB. For example the commit that deprecated and moved KeyExtent was very noisy and would make reviewing other changes difficult.
One thing that I was not able to deprecate move was
o.a.a.c.security.crypto. I would have liked to have moved this too.a.a.c.crypto. Its not really client API code, its more server side extension code. However the class names are possibly referenced by user config. Also users may have extended the classes. I added an exception for the package in the README's API stmt. Does anyone have any ideas about making this less confusing w/o causing existing users any pain.