You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Andrew Purtell (JIRA)" <ji...@apache.org> on 2011/07/07 23:46:16 UTC

[jira] [Commented] (HBASE-3842) Refactor Coprocessor Compaction API

    [ https://issues.apache.org/jira/browse/HBASE-3842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13061614#comment-13061614 ] 

Andrew Purtell commented on HBASE-3842:
---------------------------------------

Additionally I propose the addition of a new coprocessor observer type, {{CompactionObserver}}, with the following interface:

{code}
/**
 * Notification that compaction is about to begin.
 * @param context Observer context
 * @param store the Store that is about to be compacted
 * @return false to skip compaction
 */
boolean preCompact(ObserverContext<~> context, Store store);

/**
 * Notification that compaction completed
 * @param context Observer context
 * @param store the Store that was compacted
 */
void postCompact(ObserverContext<~> context, Store store);

/**
 * Called before a KV is written to the new store file.
 * <p>
 * WARNING: It is only safe, unless you <i>really</i> know what you are doing,
 * to signal the KV should be dropped by returning {{null}} or to return a KV
 * with only the value changed somehow.
 * @param context Observer context
 * @param store the Store that is being compacted
 * @param kv the KeyValue
 * @return the KeyValue to write, or null if none
 */
KeyValue preCompactWrite(ObserverContext<~> context, Store store, KeyValue kv);

/**
 * Called after a KV is written to the new store file.
 * @param context Observer context
 * @param store the Store that is being compacted
 * @param kv the KeyValue
 */
void postCompactWrite(ObserverContext<~> context, Store store, KeyValue kv);
{code}

If the coprocessor implements this interface, it is hooked into the compaction process such that it can operate on every KV. This is the same model we use for WAL observers.


> Refactor Coprocessor Compaction API
> -----------------------------------
>
>                 Key: HBASE-3842
>                 URL: https://issues.apache.org/jira/browse/HBASE-3842
>             Project: HBase
>          Issue Type: Improvement
>          Components: coprocessors, regionserver
>    Affects Versions: 0.92.0
>            Reporter: Nicolas Spiegelberg
>            Assignee: Nicolas Spiegelberg
>              Labels: compaction
>             Fix For: 0.92.0
>
>
> After HBASE-3797, the compaction logic flow has been significantly altered.  Because of this, the current compaction coprocessor API is insufficient for gaining full insight into compaction requests/results.  Refactor coprocessor API after HBASE-3797 is committed to be more extensible and increase visibility.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira