supratimdeka commented on a change in pull request #498: HDDS-2940. mkdir : create key table entries for intermediate directories in the path URL: https://github.com/apache/hadoop-ozone/pull/498#discussion_r379749450
########## File path: hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/file/OMDirectoryCreateRequest.java ########## @@ -229,12 +243,69 @@ public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager, auditMap, exception, userInfo)); } + logResult(createDirectoryRequest, keyArgs, omMetrics, result, trxnLogIndex, + exception); + + return omClientResponse; + } + + private List<OmKeyInfo> getAllParentInfo(OzoneManager ozoneManager, + KeyArgs keyArgs, List<String> missingParents, long trxnLogIndex) + throws OMException, IOException { + OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager(); + List<OmKeyInfo> missingParentInfos = new ArrayList<>(); + + ImmutablePair<Long, Long> objIdRange = OMFileRequest + .getObjIdRangeFromTxId(trxnLogIndex); + long baseObjId = objIdRange.getLeft(); + long maxObjId = objIdRange.getRight(); + long maxLevels = maxObjId - baseObjId; + long objectCount = 1; // baseObjID is used by the leaf directory + + String volumeName = keyArgs.getVolumeName(); + String bucketName = keyArgs.getBucketName(); + String keyName = keyArgs.getKeyName(); + + for (String missingKey : missingParents) { + long nextObjId = baseObjId + objectCount; + if (nextObjId > maxObjId) { + throw new OMException("Too many directories in path. Exceeds limit of " + + maxLevels + ". Unable to create directory: " + keyName + + " in volume/bucket: " + volumeName + "/" + bucketName, + INVALID_KEY_NAME); + } + + LOG.debug("missing parent {}", missingKey); Review comment: ok ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: ozone-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: ozone-issues-h...@hadoop.apache.org