-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/73076/
-----------------------------------------------------------

(Updated Feb. 11, 2021, 7:12 p.m.)


Review request for atlas, Jayendra Parab, Madhan Neethiraj, Nikhil Bonte, Nixon 
Rodrigues, and Sarath Subramanian.


Changes
-------

Updates include: 
- Minor updates.


Bugs: ATLAS-3919
    https://issues.apache.org/jira/browse/ATLAS-3919


Repository: atlas


Description
-------

**Approach**
Model: _TaskDef_
- Definition of task.
- Contains status of the task for querying.

_AbstractTask_
- Takes TaskDef as input and calls run.
- The concrete tasks has logic for doing real work.

_TaskFactory_

- Creates tasks given task type.
- Enumerates all the tasks that are supported.

_TaskManagement_

- Component/Service. Constructed after all existing components are constructed.
- Provides a simple interface for adding tasks.
- Processes tasks that are in pending state.
- Supports HA mode, where the tasks are not executed on passive instance.

_TaskManagement.Registry_

- CRUD operations with TaskDef vertex.

_TaskManagement.Processor_
- Provides mechanism for provides single queue for processing tasks in a way 
that is non-blocking.
- Uses task type and the associated TaskFactory to construct concrete task.

Changes to _EntityGraphMapper_
There are 3 new methods added that use portion of existing classification 
propagation logic and create a separate method.

New class _EntityGraphMapperWithTasks_ acts as a proxy for EntityGraphMapper. 
All calls that operate without tasks get channeled to the existing 
implementation. The ones involving tasks are modified to use the new task 
framework.

**Concurrent Changes to Classifications**
Via REST APIs and operations from web UI, it is possible to make changes to the 
same entity. This situation will be more pronounced in the new setup.

The existing framework has 
_GraphTransactionInterceptor.lockObjectAndReleasePostCommit_. This provides 
ReentrantLock on an entity that is identified by the supplied GUID. This will 
cause a lock on the entity and all the impacted vertices. This has potential 
for adversely impacting scalability.

**New Updates**
- Separate log file for tasks.
- TaskDef now has _startTime_ and _endTime_ to indicating start and end of task.
- Refactored parameter passing during task creation. It now accepts Map instead 
of Object array. Each task creates its own set of parameters.
- Reduced use of TASKS_ENABLE flag checks.


Diffs (updated)
-----

  common/src/main/java/org/apache/atlas/repository/Constants.java 61abfcaca 
  distro/src/conf/atlas-log4j.xml 7df963eb2 
  intg/src/main/java/org/apache/atlas/AtlasConfiguration.java 08d6c9d4a 
  intg/src/main/java/org/apache/atlas/model/instance/AtlasClassification.java 
1edf4eeaf 
  intg/src/main/java/org/apache/atlas/model/tasks/TaskDef.java PRE-CREATION 
  intg/src/main/java/org/apache/atlas/type/AtlasType.java b30b483e0 
  intg/src/main/java/org/apache/atlas/utils/AtlasJson.java abeddf640 
  intg/src/test/resources/atlas-application.properties 7e74d5107 
  repository/src/main/java/org/apache/atlas/GraphTransactionInterceptor.java 
86b369fc9 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityStoreV2.java
 ce58e9aa4 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java
 2cfcc0bc1 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/tasks/ClassificationPropagateTaskFactory.java
 PRE-CREATION 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/tasks/ClassificationPropagationTasks.java
 PRE-CREATION 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/tasks/ClassificationTask.java
 PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/AbstractTask.java 
PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/TaskExecutor.java 
PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/TaskFactory.java PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/TaskLogger.java PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/TaskManagement.java 
PRE-CREATION 
  repository/src/main/java/org/apache/atlas/tasks/TaskRegistry.java 
PRE-CREATION 
  repository/src/main/java/org/apache/atlas/util/BeanUtilRepo.java PRE-CREATION 
  
repository/src/test/java/org/apache/atlas/repository/tagpropagation/ClassificationPropagationTest.java
 84e9bfa04 
  repository/src/test/java/org/apache/atlas/tasks/TaskExecutorTest.java 
PRE-CREATION 
  repository/src/test/java/org/apache/atlas/tasks/TaskManagementTest.java 
PRE-CREATION 
  repository/src/test/java/org/apache/atlas/tasks/TaskRegistryTest.java 
PRE-CREATION 
  server-api/src/main/java/org/apache/atlas/RequestContext.java 7de3536f4 
  
server-api/src/main/java/org/apache/atlas/listener/ActiveStateChangeHandler.java
 bb7f8fcc4 
  test-tools/src/main/resources/log4j.properties 4db0598ad 
  webapp/src/main/java/org/apache/atlas/web/resources/AdminResource.java 
e8fc111a6 
  webapp/src/test/java/org/apache/atlas/web/resources/AdminResourceTest.java 
77422b2a5 


Diff: https://reviews.apache.org/r/73076/diff/15/

Changes: https://reviews.apache.org/r/73076/diff/14-15/


Testing
-------

**Unit tests**
New tests.

**Manual tests**
In-progress.

**Volume test**
Pending.

**Pre-commit build**
https://ci-builds.apache.org/job/Atlas/job/PreCommit-ATLAS-Build-Test/281/


Thanks,

Ashutosh Mestry

Reply via email to