dombizita commented on code in PR #7960:
URL: https://github.com/apache/ozone/pull/7960#discussion_r1977370958
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ReconTaskControllerImpl.java:
##########
@@ -158,18 +158,20 @@ private void
ignoreFailedTasks(List<ReconOmTask.TaskResult> failedTasks) {
}
@Override
- public synchronized void reInitializeTasks(ReconOMMetadataManager
omMetadataManager) {
+ public synchronized void reInitializeTasks(ReconOMMetadataManager
omMetadataManager,
+ Map<String, ReconOmTask>
reconOmTaskMap) {
Review Comment:
Could you please add a java doc for this method? It'd be good to know that
happens if `reconOmTaskMap` is null, etc.
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/impl/OzoneManagerServiceProviderImpl.java:
##########
@@ -267,6 +268,34 @@ public void start() {
reconTaskController.getRegisteredTasks()
.values()
.forEach(ReconOmTask::init);
+
+ // Verify if 'OmDeltaRequest' task's lastUpdatedSeqNumber number not
matching with
+ // lastUpdatedSeqNumber number for any of the OM task, then just run
reprocess for such tasks.
+ ReconTaskStatusUpdater deltaTaskStatusUpdater =
+
taskStatusUpdaterManager.getTaskStatusUpdater(OmSnapshotTaskName.OmDeltaRequest.name());
+
+ Map<String, ReconOmTask> reconOmTaskMap =
reconTaskController.getRegisteredTasks()
+ .entrySet()
+ .stream()
+ .filter(entry -> {
+ String taskName = entry.getKey();
+ ReconOmTask task = entry.getValue();
+ ReconTaskStatusUpdater taskStatusUpdater =
taskStatusUpdaterManager.getTaskStatusUpdater(taskName);
+
+ return !taskName.equals(OmSnapshotTaskName.OmDeltaRequest.name()) &&
// Condition 1
+ !taskStatusUpdater.getLastUpdatedSeqNumber()
+ .equals(deltaTaskStatusUpdater.getLastUpdatedSeqNumber());
// Condition 2
+ })
+ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
// Collect into desired Map
+ LOG.info("Task details of such tasks whose lastUpdatedSeqNumber number not
matching with " +
+ "lastUpdatedSeqNumber of 'OmDeltaRequest' task::\n");
+ LOG.info(deltaTaskStatusUpdater.getTaskName() + "->" +
deltaTaskStatusUpdater.getLastUpdatedSeqNumber());
+ reconOmTaskMap.keySet()
+ .forEach(taskName -> {
+ LOG.info(taskName + "->" +
taskStatusUpdaterManager.getTaskStatusUpdater(taskName).getLastUpdatedSeqNumber());
+
+ });
Review Comment:
This logging will happen even if there is no tasks that need to be
reinitialised? Can we add a check if `reconOmTaskMap` is empty?
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ReconTaskController.java:
##########
@@ -41,9 +41,11 @@ void consumeOMEvents(OMUpdateEventBatch events,
/**
* Pass on the handle to a new OM DB instance to the registered tasks.
+ *
* @param omMetadataManager OM Metadata Manager instance
+ * @param reconOmTaskMap
*/
- void reInitializeTasks(ReconOMMetadataManager omMetadataManager);
+ void reInitializeTasks(ReconOMMetadataManager omMetadataManager, Map<String,
ReconOmTask> reconOmTaskMap);
Review Comment:
Please update the javadoc, what the new `reconOmTaskMap` does and what
happens if it's null, etc.
##########
hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/tasks/ReconTaskControllerImpl.java:
##########
@@ -158,18 +158,20 @@ private void
ignoreFailedTasks(List<ReconOmTask.TaskResult> failedTasks) {
}
@Override
- public synchronized void reInitializeTasks(ReconOMMetadataManager
omMetadataManager) {
+ public synchronized void reInitializeTasks(ReconOMMetadataManager
omMetadataManager,
+ Map<String, ReconOmTask>
reconOmTaskMap) {
Collection<NamedCallableTask<ReconOmTask.TaskResult>> tasks = new
ArrayList<>();
+ Map<String, ReconOmTask> localReconOmTaskMap = reconOmTaskMap;
+ if (null == reconOmTaskMap) {
Review Comment:
nit
```suggestion
if (reconOmTaskMap == null) {
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]