hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leen Toelen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HBASE-3260) Coprocessors: Lifecycle management
Date Thu, 09 Dec 2010 14:19:01 GMT

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

Leen Toelen commented on HBASE-3260:
------------------------------------

Nuxeo uses a custom version of an OSGi container. This might be interesting as well. They
are also adding OSGi metadata on their bundles, which makes sense even if not using OSGi at
runtime.

(Slide 41)
http://blogs.nuxeo.com/fermigier/2010/12/lessons-learned-building-nuxeo-ep-the-slides-are-now-available.html

> Coprocessors: Lifecycle management
> ----------------------------------
>
>                 Key: HBASE-3260
>                 URL: https://issues.apache.org/jira/browse/HBASE-3260
>             Project: HBase
>          Issue Type: Sub-task
>            Reporter: Andrew Purtell
>             Fix For: 0.92.0
>
>         Attachments: statechart.png
>
>
> Considering extending CPs to the master, we have no equivalent to pre/postOpen and pre/postClose
as on the regionserver. We also should consider how to resolve dependencies and initialization
ordering if loading coprocessors that depend on others. 
> OSGi (http://en.wikipedia.org/wiki/OSGi) has a lifecycle API and is familiar to many
Java programmers, so we propose to borrow its terminology and state machine.
> A lifecycle layer manages coprocessors as they are dynamically installed, started, stopped,
updated and uninstalled. Coprocessors rely on the framework for dependency resolution and
class loading. In turn, the framework calls up to lifecycle management methods in the coprocessor
as needed.
> A coprocessor transitions between the below states over its lifetime:
> ||State||Description||
> |UNINSTALLED|The coprocessor implementation is not installed. This is the default implicit
state.|
> |INSTALLED|The coprocessor implementation has been successfully installed|
> |STARTING|A coprocessor instance is being started.|
> |ACTIVE|The coprocessor instance has been successfully activated and is running.|
> |STOPPING|A coprocessor instance is being stopped.|
> See attached state diagram. Transitions to STOPPING will only happen as the region is
being closed. If a coprocessor throws an unhandled exception, this will cause the RegionServer
to close the region, stopping all coprocessor instances on it. 
> Transitions from INSTALLED->STARTING and ACTIVE->STOPPING would go through upcall
methods into the coprocessor via the CoprocessorLifecycle interface:
> {code:java}
> public interface CoprocessorLifecycle {
>   void start(CoprocessorEnvironment env) throws IOException; 
>   void stop(CoprocessorEnvironment env) throws IOException;
> }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message