Clone
Abdullah Alamoudi <bamousaa@gmail.com>
committed
on 27 Jul 17
[ASTERIXDB-1992][ING] Suspend/Resume active entities
- user model changes: wait for completion only returns
when the entity becomes inacti… Show more
[ASTERIXDB-1992][ING] Suspend/Resume active entities

- user model changes: wait for completion only returns

 when the entity becomes inactive.

- storage format changes: no

- interface changes:

 01) Introduce:

     IMetadataLockManager for entity locking.

     IActiveNotificationHandler for handling active events.

     IRetryPolicy for recovery of failed active jobs.

     IActiveEntityController for controlling active entities.

 02) IJobLifecycleListener.notifyJobFinish now passes the

     JobStatus and Exceptions.

 03) IActiveEntityEventsListener.isActive() returns true,

     if entity is active, false otherwise.

 04) IActiveEntityEventsListener.unregister() removes the

     listener upon entity deletion.

 05) IActiveEntityEventsListener.getJobFailure() returns

     the job failure if the entity is in a failed state.

 06) IStatementExecutor.getComponentProvider() returns

     the storage component provider.

 07) IStatementExecutor.getApplicationContext() returns

     the application context.

 08) IMetadataManager.upsertEntity to perfrom metadata

     entities' upsert operations.

 09) IMetadataNode.upsertEntity to perfrom metadata

     entities' upsert operations

 10) ICcApplicationContext.getMetadataLockManager() returns

     the lock manger.

 11) ICcApplicationContext.getClusterStateManager() returns

     the cluster state manager.

details:

- Starting and stopping of active entities now go through

 their listeners rather than having the listener indicating

 active entity and not having it indicating inactive entity.

 This facilitates suspend/resume operations of long running

 active jobs for the sake of DDL operations or topology

 changes.

- Unit tests for the vast majority of code paths and

 different possible scenarios have been added.

Change-Id: Ifeac8c73e6bad39a13663b84a52121356e3c6b40

Reviewed-on: https://asterix-gerrit.ics.uci.edu/1875

Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

BAD: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>

Reviewed-by: Murtadha Hubail <mhubail@apache.org>

Show less

master + 4 more