From 8a27f93dc228e99bd8f19d4f9c97dc6c6dd9d2c1 Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Wed, 12 Mar 2025 20:18:14 +0530 Subject: [PATCH 1/7] HDDS-12549. refactor ratis request to common place --- .../apache/hadoop/ozone/om/OzoneManager.java | 14 +++ .../hadoop/ozone/om/execution/OMGateway.java | 106 ++++++++++++++++++ .../ozone/om/execution/package-info.java | 21 ++++ .../ratis/utils/OzoneManagerRatisUtils.java | 18 ++- ...ManagerProtocolServerSideTranslatorPB.java | 55 +-------- .../ratis/TestOzoneManagerRatisRequest.java | 3 + 6 files changed, 164 insertions(+), 53 deletions(-) create mode 100644 hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java create mode 100644 hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/package-info.java diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 2d955e7cea66..3cebb71acafc 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -226,6 +226,7 @@ import org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes; import org.apache.hadoop.ozone.om.exceptions.OMLeaderNotReadyException; import org.apache.hadoop.ozone.om.exceptions.OMNotLeaderException; +import org.apache.hadoop.ozone.om.execution.OMGateway; import org.apache.hadoop.ozone.om.ha.OMHAMetrics; import org.apache.hadoop.ozone.om.ha.OMHANodeDetails; import org.apache.hadoop.ozone.om.helpers.BasicOmKeyInfo; @@ -422,6 +423,7 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl private OzoneManagerProtocolServerSideTranslatorPB omServerProtocol; private OzoneManagerRatisServer omRatisServer; + private OMGateway omGateway; private OmRatisSnapshotProvider omRatisSnapshotProvider; private OMNodeDetails omNodeDetails; private final Map peerNodesMap; @@ -714,6 +716,10 @@ private OzoneManager(OzoneConfiguration conf, StartupOption startupOption) if (isOmGrpcServerEnabled) { omS3gGrpcServer = getOmS3gGrpcServer(configuration); } + + // init om gateway for request + omGateway = new OMGateway(this); + ShutdownHookManager.get().addShutdownHook(this::saveOmMetrics, SHUTDOWN_HOOK_PRIORITY); @@ -1748,6 +1754,8 @@ public void start() throws IOException { bootstrap(omNodeDetails); } + omGateway.start(); + omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); SYSTEMAUDIT.logWriteSuccess(buildAuditMessageForSuccess(OMSystemAction.STARTUP, auditMap)); @@ -1824,6 +1832,7 @@ public void restart() throws IOException { isOmGrpcServerRunning = true; } setStartTime(); + omGateway.start(); omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); SYSTEMAUDIT.logWriteSuccess(buildAuditMessageForSuccess(OMSystemAction.STARTUP, auditMap)); @@ -2237,6 +2246,7 @@ public boolean stop() { } try { omState = State.STOPPED; + omGateway.stop(); // Cancel the metrics timer and set to null. if (metricsTimer != null) { metricsTimer.cancel(); @@ -5031,4 +5041,8 @@ public void checkFeatureEnabled(OzoneManagerVersion feature) throws OMException throw new OMException("Feature disabled: " + feature, OMException.ResultCodes.NOT_SUPPORTED_OPERATION); } } + + public OMGateway getOmGateway() { + return omGateway; + } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java new file mode 100644 index 000000000000..3bcd7444d378 --- /dev/null +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.ozone.om.execution; + +import static org.apache.hadoop.ozone.util.MetricUtil.captureLatencyNs; + +import com.google.protobuf.ServiceException; +import java.io.IOException; +import org.apache.hadoop.ozone.om.OMPerformanceMetrics; +import org.apache.hadoop.ozone.om.OzoneManager; +import org.apache.hadoop.ozone.om.helpers.OMAuditLogger; +import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils; +import org.apache.hadoop.ozone.om.request.OMClientRequest; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; +import org.apache.ratis.protocol.ClientId; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * entry for execution flow for write request. + */ +public class OMGateway { + private static final Logger LOG = LoggerFactory.getLogger(OMGateway.class); + + private final OzoneManager ozoneManager; + private final OMPerformanceMetrics perfMetrics; + + public OMGateway(OzoneManager om) throws IOException { + this.ozoneManager = om; + this.perfMetrics = ozoneManager.getPerfMetrics(); + } + + public void start() { + // TODO: with pre-ratis execution flow, this is required to manage flow + } + + public void stop() { + } + + /** + * External request handling. + * + * @param omRequest the request + * @return OMResponse the response of execution + * @throws ServiceException the exception on execution + */ + public OMResponse submit(OMRequest omRequest) throws ServiceException { + // TODO: currently have only execution after ratis submission, but with new flow can have switch later + return submitExecutionToRatis(omRequest); + } + + /** + * Internal request to be directly executed. + * + * @param omRequest the request + * @param clientId clientId of request + * @param callId callId of request + * @return the response of execution + * @throws ServiceException the exception on execution + */ + public OMResponse submitInternal(OMRequest omRequest, ClientId clientId, long callId) throws ServiceException { + return ozoneManager.getOmRatisServer().submitRequest(omRequest, clientId, callId); + } + + private OMResponse submitExecutionToRatis(OMRequest request) throws ServiceException { + // 1. create client request and preExecute + OMClientRequest omClientRequest = null; + final OMRequest requestToSubmit; + try { + omClientRequest = OzoneManagerRatisUtils.createClientRequest(request, ozoneManager); + assert (omClientRequest != null); + final OMClientRequest finalOmClientRequest = omClientRequest; + requestToSubmit = captureLatencyNs(perfMetrics.getPreExecuteLatencyNs(), + () -> finalOmClientRequest.preExecute(ozoneManager)); + } catch (IOException ex) { + if (omClientRequest != null) { + OMAuditLogger.log(omClientRequest.getAuditBuilder()); + omClientRequest.handleRequestFailure(ozoneManager); + } + return OzoneManagerRatisUtils.createErrorResponse(request, ex); + } + + // 2. submit request to ratis + OMResponse response = ozoneManager.getOmRatisServer().submitRequest(requestToSubmit); + if (!response.getSuccess()) { + omClientRequest.handleRequestFailure(ozoneManager); + } + return response; + } +} diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/package-info.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/package-info.java new file mode 100644 index 000000000000..713f8348978e --- /dev/null +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/package-info.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * This package contains classes for the OM execution implementation. + */ +package org.apache.hadoop.ozone.om.execution; diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java index 7a2c66e81d2d..f33840f3efd8 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java @@ -515,6 +515,22 @@ public static GrpcTlsConfig createServerTlsConfig(SecurityConfig conf, public static OzoneManagerProtocolProtos.OMResponse submitRequest( OzoneManager om, OMRequest omRequest, ClientId clientId, long callId) throws ServiceException { - return om.getOmRatisServer().submitRequest(omRequest, clientId, callId); + return om.getOmGateway().submitInternal(omRequest, clientId, callId); + } + + public static OzoneManagerProtocolProtos.OMResponse createErrorResponse( + OMRequest omRequest, IOException exception) { + // Added all write command types here, because in future if any of the + // preExecute is changed to return IOException, we can return the error + // OMResponse to the client. + OzoneManagerProtocolProtos.OMResponse.Builder omResponse = OzoneManagerProtocolProtos.OMResponse.newBuilder() + .setStatus(OzoneManagerRatisUtils.exceptionToResponseStatus(exception)) + .setCmdType(omRequest.getCmdType()) + .setTraceID(omRequest.getTraceID()) + .setSuccess(false); + if (exception.getMessage() != null) { + omResponse.setMessage(exception.getMessage()); + } + return omResponse.build(); } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java index 13403cadce1a..4ee8d3e729d2 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java @@ -19,7 +19,7 @@ import static org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer.RaftServerStatus.LEADER_AND_READY; import static org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer.RaftServerStatus.NOT_LEADER; -import static org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils.createClientRequest; +import static org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils.createErrorResponse; import static org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type.PrepareStatus; import static org.apache.hadoop.ozone.util.MetricUtil.captureLatencyNs; @@ -38,12 +38,10 @@ import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.exceptions.OMException; import org.apache.hadoop.ozone.om.exceptions.OMLeaderNotReadyException; -import org.apache.hadoop.ozone.om.helpers.OMAuditLogger; import org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolPB; import org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer; import org.apache.hadoop.ozone.om.ratis.OzoneManagerRatisServer.RaftServerStatus; import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils; -import org.apache.hadoop.ozone.om.request.OMClientRequest; import org.apache.hadoop.ozone.om.request.validation.RequestValidations; import org.apache.hadoop.ozone.om.request.validation.ValidationContext; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos; @@ -173,43 +171,13 @@ private OMResponse internalProcessRequest(OMRequest request) throws ServiceExcep return cached; } - // process new request - OMClientRequest omClientRequest = null; - final OMRequest requestToSubmit; - try { - omClientRequest = createClientRequest(request, ozoneManager); - // TODO: Note: Due to HDDS-6055, createClientRequest() could now - // return null, which triggered the findbugs warning. - // Added the assertion. - assert (omClientRequest != null); - OMClientRequest finalOmClientRequest = omClientRequest; - - requestToSubmit = preExecute(finalOmClientRequest); - this.lastRequestToSubmit = requestToSubmit; - } catch (IOException ex) { - if (omClientRequest != null) { - OMAuditLogger.log(omClientRequest.getAuditBuilder()); - omClientRequest.handleRequestFailure(ozoneManager); - } - return createErrorResponse(request, ex); - } - - final OMResponse response = omRatisServer.submitRequest(requestToSubmit); - if (!response.getSuccess()) { - omClientRequest.handleRequestFailure(ozoneManager); - } - return response; + this.lastRequestToSubmit = request; + return ozoneManager.getOmGateway().submit(request); } finally { OzoneManager.setS3Auth(null); } } - private OMRequest preExecute(OMClientRequest finalOmClientRequest) - throws IOException { - return captureLatencyNs(perfMetrics.getPreExecuteLatencyNs(), - () -> finalOmClientRequest.preExecute(ozoneManager)); - } - @VisibleForTesting public OMRequest getLastRequestToSubmit() { return lastRequestToSubmit; @@ -248,23 +216,6 @@ private ServiceException createLeaderNotReadyException() { return new ServiceException(leaderNotReadyException); } - /** @return an {@link OMResponse} from the given {@link OMRequest} and the given exception. */ - private OMResponse createErrorResponse( - OMRequest omRequest, IOException exception) { - // Added all write command types here, because in future if any of the - // preExecute is changed to return IOException, we can return the error - // OMResponse to the client. - OMResponse.Builder omResponse = OMResponse.newBuilder() - .setStatus(OzoneManagerRatisUtils.exceptionToResponseStatus(exception)) - .setCmdType(omRequest.getCmdType()) - .setTraceID(omRequest.getTraceID()) - .setSuccess(false); - if (exception.getMessage() != null) { - omResponse.setMessage(exception.getMessage()); - } - return omResponse.build(); - } - public static Logger getLog() { return LOG; } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java index f8bb6b3227e2..c880c01de971 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java @@ -38,6 +38,7 @@ import org.apache.hadoop.ozone.om.OmMetadataManagerImpl; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.exceptions.OMException; +import org.apache.hadoop.ozone.om.execution.OMGateway; import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs; import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils; import org.apache.hadoop.ozone.om.request.OMRequestTestUtils; @@ -109,6 +110,8 @@ public void testUnknownRequestHandling() omMetadataManager = new OmMetadataManagerImpl(ozoneConfiguration, ozoneManager); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); + OMGateway omGateway = new OMGateway(ozoneManager); + when(ozoneManager.getOmGateway()).thenReturn(omGateway); when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration); final OmConfig omConfig = ozoneConfiguration.getObject(OmConfig.class); when(ozoneManager.getConfig()).thenReturn(omConfig); From bf88b7ecb5a1aa10d2740669987691a4a131be6b Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Sat, 15 Mar 2025 18:50:22 +0530 Subject: [PATCH 2/7] review comment fix --- .../ozone/om/execution/{OMGateway.java => OMExecutionFlow.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/{OMGateway.java => OMExecutionFlow.java} (100%) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java similarity index 100% rename from hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMGateway.java rename to hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java From 3aa52b122e268f84e1184b58524b300bd2a5d30c Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Sat, 15 Mar 2025 20:43:07 +0530 Subject: [PATCH 3/7] review fix --- .../org/apache/hadoop/ozone/om/OzoneManager.java | 16 ++++++++-------- .../ozone/om/execution/OMExecutionFlow.java | 6 +++--- .../om/ratis/utils/OzoneManagerRatisUtils.java | 2 +- ...oneManagerProtocolServerSideTranslatorPB.java | 2 +- .../om/ratis/TestOzoneManagerRatisRequest.java | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 3cebb71acafc..614236856b28 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -226,7 +226,7 @@ import org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes; import org.apache.hadoop.ozone.om.exceptions.OMLeaderNotReadyException; import org.apache.hadoop.ozone.om.exceptions.OMNotLeaderException; -import org.apache.hadoop.ozone.om.execution.OMGateway; +import org.apache.hadoop.ozone.om.execution.OMExecutionFlow; import org.apache.hadoop.ozone.om.ha.OMHAMetrics; import org.apache.hadoop.ozone.om.ha.OMHANodeDetails; import org.apache.hadoop.ozone.om.helpers.BasicOmKeyInfo; @@ -423,7 +423,7 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl private OzoneManagerProtocolServerSideTranslatorPB omServerProtocol; private OzoneManagerRatisServer omRatisServer; - private OMGateway omGateway; + private OMExecutionFlow omExecutionFlow; private OmRatisSnapshotProvider omRatisSnapshotProvider; private OMNodeDetails omNodeDetails; private final Map peerNodesMap; @@ -718,7 +718,7 @@ private OzoneManager(OzoneConfiguration conf, StartupOption startupOption) } // init om gateway for request - omGateway = new OMGateway(this); + omExecutionFlow = new OMExecutionFlow(this); ShutdownHookManager.get().addShutdownHook(this::saveOmMetrics, SHUTDOWN_HOOK_PRIORITY); @@ -1754,7 +1754,7 @@ public void start() throws IOException { bootstrap(omNodeDetails); } - omGateway.start(); + omExecutionFlow.start(); omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); @@ -1832,7 +1832,7 @@ public void restart() throws IOException { isOmGrpcServerRunning = true; } setStartTime(); - omGateway.start(); + omExecutionFlow.start(); omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); SYSTEMAUDIT.logWriteSuccess(buildAuditMessageForSuccess(OMSystemAction.STARTUP, auditMap)); @@ -2246,7 +2246,7 @@ public boolean stop() { } try { omState = State.STOPPED; - omGateway.stop(); + omExecutionFlow.stop(); // Cancel the metrics timer and set to null. if (metricsTimer != null) { metricsTimer.cancel(); @@ -5042,7 +5042,7 @@ public void checkFeatureEnabled(OzoneManagerVersion feature) throws OMException } } - public OMGateway getOmGateway() { - return omGateway; + public OMExecutionFlow getOmExecutionFlow() { + return omExecutionFlow; } } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java index 3bcd7444d378..8482e3888567 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java @@ -35,13 +35,13 @@ /** * entry for execution flow for write request. */ -public class OMGateway { - private static final Logger LOG = LoggerFactory.getLogger(OMGateway.class); +public class OMExecutionFlow { + private static final Logger LOG = LoggerFactory.getLogger(OMExecutionFlow.class); private final OzoneManager ozoneManager; private final OMPerformanceMetrics perfMetrics; - public OMGateway(OzoneManager om) throws IOException { + public OMExecutionFlow(OzoneManager om) { this.ozoneManager = om; this.perfMetrics = ozoneManager.getPerfMetrics(); } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java index f33840f3efd8..c8e81760a9bf 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java @@ -515,7 +515,7 @@ public static GrpcTlsConfig createServerTlsConfig(SecurityConfig conf, public static OzoneManagerProtocolProtos.OMResponse submitRequest( OzoneManager om, OMRequest omRequest, ClientId clientId, long callId) throws ServiceException { - return om.getOmGateway().submitInternal(omRequest, clientId, callId); + return om.getOmExecutionFlow().submitInternal(omRequest, clientId, callId); } public static OzoneManagerProtocolProtos.OMResponse createErrorResponse( diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java index 4ee8d3e729d2..6b7bccd4ab9d 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerProtocolServerSideTranslatorPB.java @@ -172,7 +172,7 @@ private OMResponse internalProcessRequest(OMRequest request) throws ServiceExcep } this.lastRequestToSubmit = request; - return ozoneManager.getOmGateway().submit(request); + return ozoneManager.getOmExecutionFlow().submit(request); } finally { OzoneManager.setS3Auth(null); } diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java index c880c01de971..f7bc1173d345 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java @@ -38,7 +38,7 @@ import org.apache.hadoop.ozone.om.OmMetadataManagerImpl; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.exceptions.OMException; -import org.apache.hadoop.ozone.om.execution.OMGateway; +import org.apache.hadoop.ozone.om.execution.OMExecutionFlow; import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs; import org.apache.hadoop.ozone.om.ratis.utils.OzoneManagerRatisUtils; import org.apache.hadoop.ozone.om.request.OMRequestTestUtils; @@ -110,8 +110,8 @@ public void testUnknownRequestHandling() omMetadataManager = new OmMetadataManagerImpl(ozoneConfiguration, ozoneManager); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); - OMGateway omGateway = new OMGateway(ozoneManager); - when(ozoneManager.getOmGateway()).thenReturn(omGateway); + OMExecutionFlow omGateway = new OMExecutionFlow(ozoneManager); + when(ozoneManager.getOmExecutionFlow()).thenReturn(omGateway); when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration); final OmConfig omConfig = ozoneConfiguration.getObject(OmConfig.class); when(ozoneManager.getConfig()).thenReturn(omConfig); From a1774c353cfa0558267bc7c9a75795609070ebe7 Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Mon, 17 Mar 2025 10:34:46 +0530 Subject: [PATCH 4/7] review fix --- .../main/java/org/apache/hadoop/ozone/om/OzoneManager.java | 4 ---- .../apache/hadoop/ozone/om/execution/OMExecutionFlow.java | 7 ------- 2 files changed, 11 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 614236856b28..b95b2c58a190 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -1754,8 +1754,6 @@ public void start() throws IOException { bootstrap(omNodeDetails); } - omExecutionFlow.start(); - omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); SYSTEMAUDIT.logWriteSuccess(buildAuditMessageForSuccess(OMSystemAction.STARTUP, auditMap)); @@ -1832,7 +1830,6 @@ public void restart() throws IOException { isOmGrpcServerRunning = true; } setStartTime(); - omExecutionFlow.start(); omState = State.RUNNING; auditMap.put("NewOmState", omState.name()); SYSTEMAUDIT.logWriteSuccess(buildAuditMessageForSuccess(OMSystemAction.STARTUP, auditMap)); @@ -2246,7 +2243,6 @@ public boolean stop() { } try { omState = State.STOPPED; - omExecutionFlow.stop(); // Cancel the metrics timer and set to null. if (metricsTimer != null) { metricsTimer.cancel(); diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java index 8482e3888567..c6a5c7f8d021 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java @@ -46,13 +46,6 @@ public OMExecutionFlow(OzoneManager om) { this.perfMetrics = ozoneManager.getPerfMetrics(); } - public void start() { - // TODO: with pre-ratis execution flow, this is required to manage flow - } - - public void stop() { - } - /** * External request handling. * From cb7d2ccfa90bce430f7eb2ec2920d3e64d8a3640 Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Wed, 19 Mar 2025 10:30:13 +0530 Subject: [PATCH 5/7] review fix --- .../main/java/org/apache/hadoop/ozone/om/OzoneManager.java | 2 +- .../hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index b95b2c58a190..eda35255be65 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -717,7 +717,7 @@ private OzoneManager(OzoneConfiguration conf, StartupOption startupOption) omS3gGrpcServer = getOmS3gGrpcServer(configuration); } - // init om gateway for request + // init om execution flow for request omExecutionFlow = new OMExecutionFlow(this); ShutdownHookManager.get().addShutdownHook(this::saveOmMetrics, diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java index f7bc1173d345..7226cf6e91fc 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/ratis/TestOzoneManagerRatisRequest.java @@ -110,8 +110,8 @@ public void testUnknownRequestHandling() omMetadataManager = new OmMetadataManagerImpl(ozoneConfiguration, ozoneManager); when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager); - OMExecutionFlow omGateway = new OMExecutionFlow(ozoneManager); - when(ozoneManager.getOmExecutionFlow()).thenReturn(omGateway); + OMExecutionFlow omExecutionFlow = new OMExecutionFlow(ozoneManager); + when(ozoneManager.getOmExecutionFlow()).thenReturn(omExecutionFlow); when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration); final OmConfig omConfig = ozoneConfiguration.getObject(OmConfig.class); when(ozoneManager.getConfig()).thenReturn(omConfig); From 31800dd9260caf6c9101ff34e60942bb4d789dab Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Wed, 19 Mar 2025 21:26:31 +0530 Subject: [PATCH 6/7] fix review comment --- .../hadoop/ozone/om/execution/OMExecutionFlow.java | 13 ------------- .../om/ratis/utils/OzoneManagerRatisUtils.java | 2 +- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java index c6a5c7f8d021..5541f2142967 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java @@ -58,19 +58,6 @@ public OMResponse submit(OMRequest omRequest) throws ServiceException { return submitExecutionToRatis(omRequest); } - /** - * Internal request to be directly executed. - * - * @param omRequest the request - * @param clientId clientId of request - * @param callId callId of request - * @return the response of execution - * @throws ServiceException the exception on execution - */ - public OMResponse submitInternal(OMRequest omRequest, ClientId clientId, long callId) throws ServiceException { - return ozoneManager.getOmRatisServer().submitRequest(omRequest, clientId, callId); - } - private OMResponse submitExecutionToRatis(OMRequest request) throws ServiceException { // 1. create client request and preExecute OMClientRequest omClientRequest = null; diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java index c8e81760a9bf..5548be7bd8ba 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java @@ -515,7 +515,7 @@ public static GrpcTlsConfig createServerTlsConfig(SecurityConfig conf, public static OzoneManagerProtocolProtos.OMResponse submitRequest( OzoneManager om, OMRequest omRequest, ClientId clientId, long callId) throws ServiceException { - return om.getOmExecutionFlow().submitInternal(omRequest, clientId, callId); + return om.getOmRatisServer().submitRequest(omRequest, clientId, callId); } public static OzoneManagerProtocolProtos.OMResponse createErrorResponse( From 6e05ce5fef026a46ffceda61cab5885289369dc4 Mon Sep 17 00:00:00 2001 From: Sumit Agrawal Date: Thu, 20 Mar 2025 10:25:34 +0530 Subject: [PATCH 7/7] check sytle fix --- .../org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java index 5541f2142967..4ce714ab3dc3 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/execution/OMExecutionFlow.java @@ -28,15 +28,11 @@ import org.apache.hadoop.ozone.om.request.OMClientRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMResponse; -import org.apache.ratis.protocol.ClientId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * entry for execution flow for write request. */ public class OMExecutionFlow { - private static final Logger LOG = LoggerFactory.getLogger(OMExecutionFlow.class); private final OzoneManager ozoneManager; private final OMPerformanceMetrics perfMetrics;