This is an automated email from the ASF dual-hosted git repository.

devesh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new dbb3047d57 HDDS-11194. OM missing audit log for upgrade (#6958)
dbb3047d57 is described below

commit dbb3047d576ac484c790c18eb6a6d6cac6974406
Author: Sumit Agrawal <[email protected]>
AuthorDate: Thu Jul 18 17:33:59 2024 +0530

    HDDS-11194. OM missing audit log for upgrade (#6958)
---
 .../hadoop/ozone/om/TestOMUpgradeFinalization.java    | 19 +++++++++++++++++++
 .../java/org/apache/hadoop/ozone/audit/OMAction.java  |  5 ++++-
 .../om/request/upgrade/OMCancelPrepareRequest.java    | 10 ++++++++++
 .../om/request/upgrade/OMFinalizeUpgradeRequest.java  | 10 ++++++++++
 .../ozone/om/request/upgrade/OMPrepareRequest.java    | 10 ++++++++++
 5 files changed, 53 insertions(+), 1 deletion(-)

diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
index ccf94bef3c..047b8e553b 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
@@ -36,12 +36,17 @@ import java.util.concurrent.TimeoutException;
 import org.apache.hadoop.hdds.conf.OzoneConfiguration;
 import org.apache.hadoop.ozone.MiniOzoneCluster;
 import org.apache.hadoop.ozone.MiniOzoneHAClusterImpl;
+import org.apache.hadoop.ozone.audit.AuditEventStatus;
+import org.apache.hadoop.ozone.audit.AuditLogTestUtils;
+import org.apache.hadoop.ozone.audit.OMAction;
 import org.apache.hadoop.ozone.client.OzoneClient;
 import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol;
 import org.apache.hadoop.ozone.om.ratis.OzoneManagerStateMachine;
 import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer.StatusAndMessages;
 
 import org.apache.ratis.util.LifeCycle;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 /**
@@ -49,7 +54,18 @@ import org.junit.jupiter.api.Test;
  * TODO: can be merged into class with other OM tests with per-method cluster
  */
 class TestOMUpgradeFinalization {
+  static {
+    AuditLogTestUtils.enableAuditLog();
+  }
 
+  @BeforeEach
+  public void setup() throws Exception {
+    AuditLogTestUtils.truncateAuditLogFile();
+  }
+  @AfterAll
+  public static void shutdown() {
+    AuditLogTestUtils.deleteAuditLogFile();
+  }
   @Test
   void testOMUpgradeFinalizationWithOneOMDown() throws Exception {
     OzoneConfiguration conf = new OzoneConfiguration();
@@ -70,11 +86,14 @@ class TestOMUpgradeFinalization {
         // OMs.
         long prepareIndex = omClient.prepareOzoneManager(120L, 5L);
         assertClusterPrepared(prepareIndex, runningOms);
+        AuditLogTestUtils.verifyAuditLog(OMAction.UPGRADE_PREPARE, 
AuditEventStatus.SUCCESS);
 
         omClient.cancelOzoneManagerPrepare();
+        AuditLogTestUtils.verifyAuditLog(OMAction.UPGRADE_CANCEL, 
AuditEventStatus.SUCCESS);
         StatusAndMessages response =
             omClient.finalizeUpgrade("finalize-test");
         System.out.println("Finalization Messages : " + response.msgs());
+        AuditLogTestUtils.verifyAuditLog(OMAction.UPGRADE_FINALIZE, 
AuditEventStatus.SUCCESS);
 
         waitForFinalization(omClient);
         cluster.restartOzoneManager(downedOM, true);
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/audit/OMAction.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/audit/OMAction.java
index 4804b317bc..aa8e47d174 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/audit/OMAction.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/audit/OMAction.java
@@ -103,7 +103,10 @@ public enum OMAction implements AuditAction {
   SNAPSHOT_INFO,
   SET_TIMES,
 
-  ABORT_EXPIRED_MULTIPART_UPLOAD;
+  ABORT_EXPIRED_MULTIPART_UPLOAD,
+  UPGRADE_PREPARE,
+  UPGRADE_CANCEL,
+  UPGRADE_FINALIZE;
 
   @Override
   public String getAction() {
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
index 507b41f768..ea3a4127d4 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMCancelPrepareRequest.java
@@ -17,6 +17,10 @@
 
 package org.apache.hadoop.ozone.om.request.upgrade;
 
+import java.util.HashMap;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -54,10 +58,13 @@ public class OMCancelPrepareRequest extends OMClientRequest 
{
     LOG.info("OM {} Received cancel prepare request with log {}", 
ozoneManager.getOMNodeId(), termIndex);
 
     OMRequest omRequest = getOmRequest();
+    AuditLogger auditLogger = ozoneManager.getAuditLogger();
+    OzoneManagerProtocolProtos.UserInfo userInfo = omRequest.getUserInfo();
     OMResponse.Builder responseBuilder =
         OmResponseUtil.getOMResponseBuilder(omRequest);
     responseBuilder.setCmdType(Type.CancelPrepare);
     OMClientResponse response = null;
+    Exception exception = null;
 
     try {
       UserGroupInformation ugi = createUGIForApi();
@@ -82,12 +89,15 @@ public class OMCancelPrepareRequest extends OMClientRequest 
{
       LOG.info("OM {} prepare state cancelled at log {}. Returning response 
{}",
           ozoneManager.getOMNodeId(), termIndex, omResponse);
     } catch (IOException e) {
+      exception = e;
       LOG.error("Cancel Prepare Request apply failed in {}. ",
           ozoneManager.getOMNodeId(), e);
       response = new OMPrepareResponse(
           createErrorOMResponse(responseBuilder, e));
     }
 
+    auditLog(auditLogger, buildAuditMessage(OMAction.UPGRADE_CANCEL,
+        new HashMap<>(), exception, userInfo));
     return response;
   }
 
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
index 8ebf53706c..42cc2dc087 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMFinalizeUpgradeRequest.java
@@ -20,8 +20,12 @@ package org.apache.hadoop.ozone.om.request.upgrade;
 import static org.apache.hadoop.ozone.OzoneConsts.LAYOUT_VERSION_KEY;
 import static 
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type.FinalizeUpgrade;
 
+import java.util.HashMap;
 import org.apache.hadoop.hdds.protocol.proto.HddsProtos
     .UpgradeFinalizationStatus;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
+import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
 import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
@@ -58,10 +62,13 @@ public class OMFinalizeUpgradeRequest extends 
OMClientRequest {
   @Override
   public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, 
TermIndex termIndex) {
     LOG.trace("Request: {}", getOmRequest());
+    AuditLogger auditLogger = ozoneManager.getAuditLogger();
+    OzoneManagerProtocolProtos.UserInfo userInfo = 
getOmRequest().getUserInfo();
     OMResponse.Builder responseBuilder =
         OmResponseUtil.getOMResponseBuilder(getOmRequest());
     responseBuilder.setCmdType(FinalizeUpgrade);
     OMClientResponse response = null;
+    Exception exception = null;
 
     try {
       if (ozoneManager.getAclsEnabled()) {
@@ -103,10 +110,13 @@ public class OMFinalizeUpgradeRequest extends 
OMClientRequest {
           ozoneManager.getVersionManager().getMetadataLayoutVersion());
       LOG.trace("Returning response: {}", response);
     } catch (IOException e) {
+      exception = e;
       response = new OMFinalizeUpgradeResponse(
           createErrorOMResponse(responseBuilder, e), -1);
     }
 
+    auditLog(auditLogger, buildAuditMessage(OMAction.UPGRADE_FINALIZE,
+        new HashMap<>(), exception, userInfo));
     return response;
   }
 
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java
index a814459050..505f52860b 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/upgrade/OMPrepareRequest.java
@@ -17,6 +17,9 @@
 
 package org.apache.hadoop.ozone.om.request.upgrade;
 
+import java.util.HashMap;
+import org.apache.hadoop.ozone.audit.AuditLogger;
+import org.apache.hadoop.ozone.audit.OMAction;
 import org.apache.ratis.server.protocol.TermIndex;
 import org.apache.hadoop.ozone.om.OzoneManager;
 import org.apache.hadoop.ozone.om.exceptions.OMException;
@@ -69,12 +72,15 @@ public class OMPrepareRequest extends OMClientRequest {
     LOG.info("OM {} Received prepare request with log {}", 
ozoneManager.getOMNodeId(), termIndex);
 
     OMRequest omRequest = getOmRequest();
+    AuditLogger auditLogger = ozoneManager.getAuditLogger();
+    OzoneManagerProtocolProtos.UserInfo userInfo = omRequest.getUserInfo();
     OzoneManagerProtocolProtos.PrepareRequestArgs args =
         omRequest.getPrepareRequest().getArgs();
     OMResponse.Builder responseBuilder =
         OmResponseUtil.getOMResponseBuilder(omRequest);
     responseBuilder.setCmdType(Type.Prepare);
     OMClientResponse response = null;
+    Exception exception = null;
 
     // Allow double buffer this many seconds to flush all transactions before
     // returning an error to the caller.
@@ -123,6 +129,7 @@ public class OMPrepareRequest extends OMClientRequest {
           "log index {}", ozoneManager.getOMNodeId(), transactionLogIndex,
           omResponse, omResponse.getTxnID());
     } catch (OMException e) {
+      exception = e;
       LOG.error("Prepare Request Apply failed in {}. ",
           ozoneManager.getOMNodeId(), e);
       response = new OMPrepareResponse(
@@ -130,6 +137,7 @@ public class OMPrepareRequest extends OMClientRequest {
     } catch (InterruptedException | IOException e) {
       // Set error code so that prepare failure does not cause the OM to
       // terminate.
+      exception = e;
       LOG.error("Prepare Request Apply failed in {}. ",
           ozoneManager.getOMNodeId(), e);
       response = new OMPrepareResponse(
@@ -149,6 +157,8 @@ public class OMPrepareRequest extends OMClientRequest {
       }
     }
 
+    auditLog(auditLogger, buildAuditMessage(OMAction.UPGRADE_PREPARE,
+        new HashMap<>(), exception, userInfo));
     return response;
   }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to