Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -352,18 +352,18 @@ 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);

BucketLayout bucketLayout =
getBucketLayout(metadataManager, args.getVolumeName(),
args.getBucketName());
keyName = OMClientRequest
.validateAndNormalizeKey(enableFileSystemPaths, keyName,
bucketLayout);

OmKeyInfo value = null;
try {
BucketLayout bucketLayout =
getBucketLayout(metadataManager, args.getVolumeName(),
args.getBucketName());
keyName = OMClientRequest
.validateAndNormalizeKey(enableFileSystemPaths, keyName,
bucketLayout);

if (bucketLayout.isFileSystemOptimized()) {
value = getOmKeyInfoFSO(volumeName, bucketName, keyName);
} else {
Expand Down Expand Up @@ -1594,16 +1594,27 @@ public List<OzoneFileStatus> listStatus(OmKeyArgs args, boolean recursive,
String keyArgs = OzoneFSUtils.addTrailingSlashIfNeeded(
metadataManager.getOzoneKey(volumeName, bucketName, keyName));

TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>> iterator;
Table<String, OmKeyInfo> keyTable;
metadataManager.getLock().acquireReadLock(BUCKET_LOCK, volumeName,
bucketName);
Table<String, OmKeyInfo> keyTable = metadataManager
.getKeyTable(getBucketLayout(metadataManager, volName, buckName));
try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
iterator = getIteratorForKeyInTableCache(recursive, startKey,
volumeName, bucketName, cacheKeyMap, keyArgs, keyTable)) {
try {
keyTable = metadataManager
.getKeyTable(getBucketLayout(metadataManager, volName, buckName));
iterator = getIteratorForKeyInTableCache(recursive, startKey,
volumeName, bucketName, cacheKeyMap, keyArgs, keyTable);
} finally {
metadataManager.getLock().releaseReadLock(BUCKET_LOCK, volumeName,
bucketName);
}

try {
findKeyInDbWithIterator(recursive, startKey, numEntries, volumeName,
bucketName, keyName, cacheKeyMap, keyArgs, keyTable, iterator);
} finally {
iterator.close();
}

int countEntries;

countEntries = 0;
Expand Down Expand Up @@ -1639,21 +1650,16 @@ public List<OzoneFileStatus> listStatus(OmKeyArgs args, boolean recursive,
TreeMap<String, OzoneFileStatus> cacheKeyMap, String keyArgs,
Table<String, OmKeyInfo> keyTable) throws IOException {
TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>> iterator;
try {
Iterator<Map.Entry<CacheKey<String>, CacheValue<OmKeyInfo>>>
cacheIter = keyTable.cacheIterator();
String startCacheKey = OZONE_URI_DELIMITER + volumeName +
OZONE_URI_DELIMITER + bucketName + OZONE_URI_DELIMITER +
((startKey.equals(OZONE_URI_DELIMITER)) ? "" : startKey);

// First, find key in TableCache
listStatusFindKeyInTableCache(cacheIter, keyArgs, startCacheKey,
recursive, cacheKeyMap);
iterator = keyTable.iterator();
} finally {
metadataManager.getLock().releaseReadLock(BUCKET_LOCK, volumeName,
bucketName);
}
Iterator<Map.Entry<CacheKey<String>, CacheValue<OmKeyInfo>>>
cacheIter = keyTable.cacheIterator();
String startCacheKey = OZONE_URI_DELIMITER + volumeName +
OZONE_URI_DELIMITER + bucketName + OZONE_URI_DELIMITER +
((startKey.equals(OZONE_URI_DELIMITER)) ? "" : startKey);

// First, find key in TableCache
listStatusFindKeyInTableCache(cacheIter, keyArgs, startCacheKey,
recursive, cacheKeyMap);
iterator = keyTable.iterator();
return iterator;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -507,30 +507,31 @@ private static class MinHeapIterator implements ClosableIterator {

omMetadataManager.getLock().acquireReadLock(BUCKET_LOCK, volumeName,
bucketName);

// Initialize all the iterators
iterators.add(EntryType.DIR_CACHE.ordinal(),
new CacheIter<>(EntryType.DIR_CACHE,
omMetadataManager.getDirectoryTable().cacheIterator(),
startKey, prefixKey));

iterators.add(EntryType.FILE_CACHE.ordinal(),
new CacheIter<>(EntryType.FILE_CACHE,
omMetadataManager.getKeyTable(bucketLayout).cacheIterator(),
startKey, prefixKey));

iterators.add(EntryType.RAW_DIR_DB.ordinal(),
new RawIter<>(EntryType.RAW_DIR_DB,
omMetadataManager.getDirectoryTable(),
prefixKey, startKey));

iterators.add(EntryType.RAW_FILE_DB.ordinal(),
new RawIter<>(EntryType.RAW_FILE_DB,
omMetadataManager.getKeyTable(bucketLayout),
prefixKey, startKey));

omMetadataManager.getLock().releaseReadLock(BUCKET_LOCK, volumeName,
bucketName);
try {
// Initialize all the iterators
iterators.add(EntryType.DIR_CACHE.ordinal(),
new CacheIter<>(EntryType.DIR_CACHE,
omMetadataManager.getDirectoryTable().cacheIterator(),
startKey, prefixKey));

iterators.add(EntryType.FILE_CACHE.ordinal(),
new CacheIter<>(EntryType.FILE_CACHE,
omMetadataManager.getKeyTable(bucketLayout).cacheIterator(),
startKey, prefixKey));

iterators.add(EntryType.RAW_DIR_DB.ordinal(),
new RawIter<>(EntryType.RAW_DIR_DB,
omMetadataManager.getDirectoryTable(),
prefixKey, startKey));

iterators.add(EntryType.RAW_FILE_DB.ordinal(),
new RawIter<>(EntryType.RAW_FILE_DB,
omMetadataManager.getKeyTable(bucketLayout),
prefixKey, startKey));
} finally {
omMetadataManager.getLock().releaseReadLock(BUCKET_LOCK, volumeName,
bucketName);
}

// Insert the element from each of the iterator
for (Iterator<HeapEntry> iter : iterators) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2387,12 +2387,12 @@ public String getBucketOwner(String volume, String bucket, ACLType type,

private String getBucketOwner(String volume, String bucket)
throws OMException {
OmBucketInfo bucketInfo = null;

Boolean lockAcquired = metadataManager.getLock().acquireReadLock(
boolean lockAcquired = metadataManager.getLock().acquireReadLock(
BUCKET_LOCK, volume, bucket);
String dbBucketKey = metadataManager.getBucketKey(volume, bucket);
OmBucketInfo bucketInfo = null;
try {
String dbBucketKey = metadataManager.getBucketKey(volume, bucket);
bucketInfo = metadataManager.getBucketTable().get(dbBucketKey);
} catch (IOException ioe) {
if (ioe instanceof OMException) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,10 @@ public class OBSKeyPathLockStrategy implements OzoneLockStrategy {
public boolean acquireWriteLock(OMMetadataManager omMetadataManager,
String volumeName, String bucketName,
String keyName) throws IOException {
boolean acquiredLock;

acquiredLock = omMetadataManager.getLock().acquireReadLock(BUCKET_LOCK,
volumeName, bucketName);
OMFileRequest.validateBucket(omMetadataManager, volumeName, bucketName);

boolean acquiredLock = omMetadataManager.getLock().acquireReadLock(
BUCKET_LOCK, volumeName, bucketName);

Preconditions.checkArgument(acquiredLock,
"BUCKET_LOCK should be acquired!");
Expand All @@ -75,20 +73,16 @@ public void releaseWriteLock(OMMetadataManager omMetadataManager,

omMetadataManager.getLock()
.releaseReadLock(BUCKET_LOCK, volumeName, bucketName);

return;
}

@Override
public boolean acquireReadLock(OMMetadataManager omMetadataManager,
String volumeName, String bucketName,
String keyName) throws IOException {
boolean acquiredLock;

acquiredLock = omMetadataManager.getLock()
.acquireReadLock(BUCKET_LOCK, volumeName, bucketName);
OMFileRequest.validateBucket(omMetadataManager, volumeName, bucketName);

boolean acquiredLock = omMetadataManager.getLock().acquireReadLock(
BUCKET_LOCK, volumeName, bucketName);

Preconditions.checkArgument(acquiredLock,
"BUCKET_LOCK should be acquired!");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,9 @@ public class RegularBucketLockStrategy implements OzoneLockStrategy {
public boolean acquireWriteLock(OMMetadataManager omMetadataManager,
String volumeName, String bucketName,
String keyName) throws IOException {
boolean acquiredLock;

acquiredLock = omMetadataManager.getLock()
.acquireWriteLock(BUCKET_LOCK, volumeName, bucketName);
OMFileRequest.validateBucket(omMetadataManager, volumeName, bucketName);

return acquiredLock;
return omMetadataManager.getLock()
.acquireWriteLock(BUCKET_LOCK, volumeName, bucketName);
}

@Override
Expand All @@ -49,21 +45,15 @@ public void releaseWriteLock(OMMetadataManager omMetadataManager,
String keyName) {
omMetadataManager.getLock()
.releaseWriteLock(BUCKET_LOCK, volumeName, bucketName);

return;
}

@Override
public boolean acquireReadLock(OMMetadataManager omMetadataManager,
String volumeName, String bucketName,
String keyName) throws IOException {
boolean acquiredLock;

acquiredLock = omMetadataManager.getLock()
.acquireReadLock(BUCKET_LOCK, volumeName, bucketName);
OMFileRequest.validateBucket(omMetadataManager, volumeName, bucketName);

return acquiredLock;
return omMetadataManager.getLock()
.acquireReadLock(BUCKET_LOCK, volumeName, bucketName);
}

@Override
Expand All @@ -72,7 +62,5 @@ public void releaseReadLock(OMMetadataManager omMetadataManager,
String keyName) {
omMetadataManager.getLock()
.releaseReadLock(BUCKET_LOCK, volumeName, bucketName);

return;
}
}