accumulo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sean Busbey <>
Subject Re: Technical discussion on MockShell being in public API for 1.7.0
Date Thu, 16 Apr 2015 16:13:46 GMT
Hi Folks!

The Accumulo developers would like some feedback from the community on
incompatibly changing part of our public API.

Some details are below, along with a link to the JIRA that has the full
discussion. The short version goes like this:

a) We define our public API by a set of java packages
b) Sometimes we mistakenly place things in these packages without
considering the full ramifications of that placement wrt how a class is
intended to be used (in this case testing) or how its relationship to
non-public API classes fundamentally restricts the compatibility that can
be maintained.

MockShell is the particular class in this case. It's used for testing but
was mistakenly placed in a client API package. We'd like to move it back
out of the public API with a release note that calls out the breakage (and
how to update downstream code to use the relocated class).

Please let us know if this will break something you rely on. Please also
let us know if that breakage will be burdensome to repair.


On Wed, Apr 15, 2015 at 2:02 PM, Josh Elser <> wrote:

> In case others don't see it in JIRA notifications, here's some broad
> visibility.
> I noticed, through japi reports, that MockShell was technically public API
> and was removed from it due to the addition of the shell maven module. If
> you have opinions, please raise them on ACCUMULO-3726. If we need to expand
> it out to a standalone conversation, we can start a new discussion here.
> -------- Original Message --------
> Subject: [jira] [Commented] (ACCUMULO-3726) Restore MockShell in public API
> Date: Wed, 15 Apr 2015 18:59:59 +0000 (UTC)
> From: Josh Elser (JIRA) <>
> Reply-To:
> To:
>     [
> page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&
> focusedCommentId=14496703#comment-14496703 ]
> Josh Elser commented on ACCUMULO-3726:
> --------------------------------------
> _curse_
> I was worried about that. This seems like yet-another-public-api-shouldnt-be-public-api
> issue. MockShell came from o.a.a.c.client.mock.MockShell and went to
> Shell came from o.a.a.core.util.Shell and went
> to It makes 0 sense to assume MockShell is public API
> but Shell is not (and also causes more problems as it leaks Shell into the
> public API).
> Given that, I would be in favor of breaking our rules on compatibility.
> 1. MockShell should never have been in public API (as Shell was never
> public API)
> 2. It is not easily restored and deprecated.
> 3. It is likely very low risk that someone was using themselves (we
> ourselves only reference it in a single test case).
> cc/ [~busbey] since you have been very adamant in the past on topics of
> this matter.
>  Restore MockShell in public API
>> -------------------------------
>>                 Key: ACCUMULO-3726
>>                 URL:
>>             Project: Accumulo
>>          Issue Type: Sub-task
>>          Components: client
>>            Reporter: Josh Elser
>>            Assignee: Josh Elser
>>            Priority: Blocker
>>             Fix For: 1.7.0
>> MockShell was moved from o.a.a.core.client.mock. to
>> which is a violation of our public API statement.
>> It needs to be restored and deprecated with a proper cycle.
> --
> This message was sent by Atlassian JIRA
> (v6.3.4#6332)


View raw message