[
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/1875Tested-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>