[ 
https://issues.apache.org/jira/browse/HDDS-8475?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Duong updated HDDS-8475:
------------------------
    Description: 
Unexpected IOException is returned as KEY_NOT_FOUND and the original error is 
swallowed, ref: 
[KeyManagerImpl|https://github.com/apache/ozone/blob/master/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java#L420-L420]
{code:java}
private OmKeyInfo readKeyInfo(OmKeyArgs args) throws IOException {  
  try {
    ...

    if (bucketLayout.isFileSystemOptimized()) {
      value = getOmKeyInfoFSO(volumeName, bucketName, keyName);
    } else {
      value = getOmKeyInfoDirectoryAware(volumeName, bucketName, keyName);
      if (bucketLayout.isLegacy() && value != null && !value.isFile()) {
        value = null; // Legacy buckets do not report key info for directories
      }
    }
  } catch (IOException ex) {
    if (ex instanceof OMException) {
      throw ex;
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("Get key failed for volume:{} bucket:{} key:{}", volumeName,
              bucketName, keyName, ex);
    }
    throw new OMException(ex.getMessage(), KEY_NOT_FOUND);
  }{code}
 

  was:
{code:java}
private OmKeyInfo readKeyInfo(OmKeyArgs args) throws IOException {
  String volumeName = args.getVolumeName();
  String bucketName = args.getBucketName();
  String keyName = args.getKeyName();
  OmKeyInfo value = null;

  metadataManager.getLock().acquireReadLock(BUCKET_LOCK, volumeName,
      bucketName);
  try {
    BucketLayout bucketLayout =
        getBucketLayout(metadataManager, args.getVolumeName(),
            args.getBucketName());
    keyName = OMClientRequest
        .validateAndNormalizeKey(enableFileSystemPaths, keyName,
            bucketLayout);

    if (bucketLayout.isFileSystemOptimized()) {
      value = getOmKeyInfoFSO(volumeName, bucketName, keyName);
    } else {
      value = getOmKeyInfoDirectoryAware(volumeName, bucketName, keyName);
      if (bucketLayout.isLegacy() && value != null && !value.isFile()) {
        value = null; // Legacy buckets do not report key info for directories
      }
    }
  } catch (IOException ex) {
    if (ex instanceof OMException) {
      throw ex;
    }
    if (LOG.isDebugEnabled()) {
      LOG.debug("Get key failed for volume:{} bucket:{} key:{}", volumeName,
              bucketName, keyName, ex);
    }
    throw new OMException(ex.getMessage(), KEY_NOT_FOUND);
  } finally {
    metadataManager.getLock().releaseReadLock(BUCKET_LOCK, volumeName,
        bucketName);
  } {code}


> Unexpected IOException is returned as KEY_NOT_FOUND
> ---------------------------------------------------
>
>                 Key: HDDS-8475
>                 URL: https://issues.apache.org/jira/browse/HDDS-8475
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Duong
>            Priority: Major
>
> Unexpected IOException is returned as KEY_NOT_FOUND and the original error is 
> swallowed, ref: 
> [KeyManagerImpl|https://github.com/apache/ozone/blob/master/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java#L420-L420]
> {code:java}
> private OmKeyInfo readKeyInfo(OmKeyArgs args) throws IOException {  
>   try {
>     ...
>     if (bucketLayout.isFileSystemOptimized()) {
>       value = getOmKeyInfoFSO(volumeName, bucketName, keyName);
>     } else {
>       value = getOmKeyInfoDirectoryAware(volumeName, bucketName, keyName);
>       if (bucketLayout.isLegacy() && value != null && !value.isFile()) {
>         value = null; // Legacy buckets do not report key info for directories
>       }
>     }
>   } catch (IOException ex) {
>     if (ex instanceof OMException) {
>       throw ex;
>     }
>     if (LOG.isDebugEnabled()) {
>       LOG.debug("Get key failed for volume:{} bucket:{} key:{}", volumeName,
>               bucketName, keyName, ex);
>     }
>     throw new OMException(ex.getMessage(), KEY_NOT_FOUND);
>   }{code}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to