Return-Path: X-Original-To: apmail-hbase-dev-archive@www.apache.org Delivered-To: apmail-hbase-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id ECF4211306 for ; Fri, 16 May 2014 18:13:23 +0000 (UTC) Received: (qmail 92563 invoked by uid 500); 16 May 2014 17:50:27 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 56897 invoked by uid 500); 16 May 2014 17:23:30 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 96736 invoked by uid 99); 16 May 2014 17:14:43 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2014 17:14:43 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of yuzhihong@gmail.com designates 209.85.213.43 as permitted sender) Received: from [209.85.213.43] (HELO mail-yh0-f43.google.com) (209.85.213.43) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 May 2014 17:05:18 +0000 Received: by mail-yh0-f43.google.com with SMTP id v1so4570080yhn.2 for ; Fri, 16 May 2014 10:04:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=psObG8njELgPDftga1ZJ5jkxqEas/VY8Pv/lv/UFGdE=; b=XUvZ0Mn8pCMwlvEGxWmTwPoKgJimOeZ3F/yNvoCn4S7Q7vnxivec/10SXwHEqJjFuu Y8lLqmizZrJVQyO58rqvEr1ZIxaZDwXEVvTUTXOT3Aqx/g+QDUWQIAWB/A1/kCJcwQTX ujhDYomouiqUE8e41Pgzdi4Y3+9BkYfC2Zpff8Uu4K8BLBBiFVIuOAru2re8y5RqvKBq qQ3APIEDQfELiJDMKYPi1e+MlQVKFuLXcb5trVvuy7tVlj8KrfTRu6Z0uAusDunCUaMf bCY5gzPal3nYf8DFvBXUP/U/oeAsycDT5RbzwpEwPpj9DRgfh+tdKM3CfZnt/LvsXgoL Btgg== MIME-Version: 1.0 X-Received: by 10.236.14.2 with SMTP id c2mr26542874yhc.73.1400259898217; Fri, 16 May 2014 10:04:58 -0700 (PDT) Received: by 10.170.37.144 with HTTP; Fri, 16 May 2014 10:04:58 -0700 (PDT) In-Reply-To: References: Date: Fri, 16 May 2014 10:04:58 -0700 Message-ID: Subject: Re: On coprocessor API evolution From: Ted Yu To: "dev@hbase.apache.org" Content-Type: multipart/alternative; boundary=089e0139fc84d39a8f04f9876999 X-Virus-Checked: Checked by ClamAV on apache.org --089e0139fc84d39a8f04f9876999 Content-Type: text/plain; charset=UTF-8 Nicolas: Can you give an example of using @since to tag new hooks ? I searched hadoop and hbase codebase but didn't seem to find such annotation. Cheers On Fri, May 16, 2014 at 1:18 AM, Nicolas Liochon wrote: > Hi, > > (With Apache still lagging on mails, it may be difficult to have a > discussion...) > > For 1.0+, I think that registering observer as proposed in 11125 works > well. > For 0.98, could we do something like this? > - new coprocessor hooks can be added between minor releases > - existing coprocessors hooks are not removed between minor releases > - a coprocessor can extend the default implementation. Binary > compatibility when migrating to a newer minor release is ensured. > - a coprocessor can implement directly the interface, but in this case the > application needs to be updated and recompiled between minor releases . > - new hooks are always tagged with @since. This helps the coprocessor > developer if he needs to support multiple minor version. > - between major release, everything can happen. > > fwiw, Java 8 supports default implementations in interfaces: > http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html > > Cheers, > > Nicolas > > > > > > On Thu, May 15, 2014 at 3:13 AM, Andrew Purtell > wrote: > > > Because coprocessor APIs are so tightly bound with internals, if we apply > > suggested rules like as mentioned on HBASE-11054: > > > > I'd say policy should be no changes to method apis across minor > > versions > > > > This will lock coprocessor based components to the limitations of the API > > as we encounter them. Core code does not suffer this limitation, we are > > otherwise free to refactor and change internal methods. For example, if > we > > apply this policy to the 0.98 branch, then we will have to abandon > further > > security feature development there and move to trunk only. This is > because > > we already are aware that coprocessor APIs as they stand are insufficient > > still. > > > > Coprocessor APIs are a special class of internal method. We have had a > > tension between allowing freedom of movement for developing them out and > > providing some measure of stability for implementors for a while. > > > > It is my belief that the way forward is something like HBASE-11125. > Perhaps > > we can take this discussion to that JIRA and have this long overdue > > conversation. > > > > Regarding security features specifically, I would also like to call your > > attention to HBASE-11127. I think security has been an optional feature > > long enough, it is becoming a core requirement for the project, so should > > be moved into core. Sure, we can therefore sidestep any issues with > > coprocessor API sufficiency for hosting security features. However, in my > > opinion we should pursue both HBASE-11125 and HBASE-11127; the first to > > provide the relative stability long asked for by coprocessor API users, > the > > latter to cleanly solve emerging issues with concurrency and versioning. > > > > > > -- > > Best regards, > > > > - Andy > > > > Problems worthy of attack prove their worth by hitting back. - Piet Hein > > (via Tom White) > > > --089e0139fc84d39a8f04f9876999--