Class OMPrepareRequest
java.lang.Object
org.apache.hadoop.ozone.om.request.OMClientRequest
org.apache.hadoop.ozone.om.request.upgrade.OMPrepareRequest
- All Implemented Interfaces:
RequestAuditor
OM Request used to flush all transactions to disk, take a DB snapshot, and
purge the logs, leaving Ratis in a clean state without unapplied log
entries. This prepares the OM for upgrades/downgrades so that no request
in the log is applied to the database in the old version of the code in one
OM, and the new version of the code on another OM.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.hadoop.ozone.om.request.OMClientRequest
OMClientRequest.Result -
Constructor Summary
ConstructorsConstructorDescriptionOMPrepareRequest(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest omRequest) -
Method Summary
Modifier and TypeMethodDescriptionstatic voidtakeSnapshotAndPurgeLogs(long prepareIndex, org.apache.ratis.server.RaftServer.Division division) Take a snapshot of the state machine at the last index, and purge at least all log with indices less than or equal to the prepare index.validateAndUpdateCache(OzoneManager ozoneManager, ExecutionContext context) Validate the OMRequest and update the cache.Methods inherited from class org.apache.hadoop.ozone.om.request.OMClientRequest
buildAuditMessage, buildVolumeAuditMap, checkAcls, checkAcls, checkAcls, checkACLsWithFSO, createErrorOMResponse, createUGI, createUGIForApi, getAuditBuilder, getHostName, getOmLockDetails, getOmRequest, getRemoteAddress, getUserIfNotExists, getUserInfo, handleRequestFailure, isValidKeyPath, markForAudit, mergeOmLockDetails, normalizeKeyPath, preExecute, setUGI, validateAndNormalizeKey, validateAndNormalizeKey, validateAndNormalizeKey, validateAndUpdateCacheMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.hadoop.ozone.om.request.RequestAuditor
buildKeyArgsAuditMap, buildLightKeyArgsAuditMap
-
Constructor Details
-
OMPrepareRequest
public OMPrepareRequest(org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest omRequest)
-
-
Method Details
-
validateAndUpdateCache
Description copied from class:OMClientRequestValidate the OMRequest and update the cache. This step should verify that the request can be executed, perform any authorization steps and update the in-memory cache. This step does not persist the changes to the database. To coders and reviewers, CAUTION: Do NOT bring external dependencies into this method, doing so could potentially cause divergence in OM DB states in HA. If you have to, be extremely careful. e.g. Do NOT invoke ACL check inside validateAndUpdateCache, which can use Ranger plugin that relies on external DB.- Specified by:
validateAndUpdateCachein classOMClientRequest- Returns:
- the response that will be returned to the client.
-
takeSnapshotAndPurgeLogs
public static void takeSnapshotAndPurgeLogs(long prepareIndex, org.apache.ratis.server.RaftServer.Division division) throws IOException Take a snapshot of the state machine at the last index, and purge at least all log with indices less than or equal to the prepare index. If there is another prepare request or cancel prepare request, this one will end up purging that request since it was allowed through the pre-append prepare gate. This means that an OM cannot support 2 prepare requests in the transaction pipeline (un-applied) at the same time.- Throws:
IOException
-