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 @@ -57,12 +57,12 @@
import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
import org.apache.hadoop.ozone.om.snapshot.ReferenceCounted;
import org.apache.ozone.rocksdiff.DifferSnapshotInfo;
import org.apache.ozone.rocksdiff.RocksDBCheckpointDiffer;
import org.apache.ozone.test.GenericTestUtils;
import org.apache.ratis.server.RaftServer;
import org.apache.ratis.server.raftlog.RaftLog;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -212,9 +212,9 @@ public void testDAGReconstruction()
OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager();
RDBStore rdbStore = (RDBStore) omMetadataManager.getStore();
RocksDBCheckpointDiffer differ = rdbStore.getRocksDBCheckpointDiffer();
ReferenceCounted<OmSnapshot> snapDB1 = ozoneManager.getOmSnapshotManager()
UncheckedAutoCloseableSupplier<OmSnapshot> snapDB1 = ozoneManager.getOmSnapshotManager()
.getActiveSnapshot(volumeName, bucketName, "snap1");
ReferenceCounted<OmSnapshot> snapDB2 = ozoneManager.getOmSnapshotManager()
UncheckedAutoCloseableSupplier<OmSnapshot> snapDB2 = ozoneManager.getOmSnapshotManager()
.getActiveSnapshot(volumeName, bucketName, "snap2");
DifferSnapshotInfo snap1 = getDifferSnapshotInfo(omMetadataManager,
volumeName, bucketName, "snap1",
Expand All @@ -240,7 +240,7 @@ public void testDAGReconstruction()

resp = store.createSnapshot(volumeName, bucketName, "snap3");
LOG.debug("Snapshot created: {}", resp);
ReferenceCounted<OmSnapshot> snapDB3 = ozoneManager.getOmSnapshotManager()
UncheckedAutoCloseableSupplier<OmSnapshot> snapDB3 = ozoneManager.getOmSnapshotManager()
.getActiveSnapshot(volumeName, bucketName, "snap3");
DifferSnapshotInfo snap3 = getDifferSnapshotInfo(omMetadataManager,
volumeName, bucketName, "snap3",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@
import org.apache.ozone.test.LambdaTestUtils;
import org.apache.ozone.test.tag.Flaky;
import org.apache.ratis.server.protocol.TermIndex;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
Expand Down Expand Up @@ -260,7 +261,7 @@ public void testSnapshotAndKeyDeletionBackgroundServices()

// get snapshot c
OmSnapshot snapC;
try (ReferenceCounted<OmSnapshot> rcC = newLeaderOM
try (UncheckedAutoCloseableSupplier<OmSnapshot> rcC = newLeaderOM
.getOmSnapshotManager()
.getSnapshot(volumeName, bucketName, snapshotInfoC.getName())) {
assertNotNull(rcC);
Expand All @@ -284,7 +285,7 @@ public void testSnapshotAndKeyDeletionBackgroundServices()

// get snapshot d
OmSnapshot snapD;
try (ReferenceCounted<OmSnapshot> rcD = newLeaderOM
try (UncheckedAutoCloseableSupplier<OmSnapshot> rcD = newLeaderOM
.getOmSnapshotManager()
.getSnapshot(volumeName, bucketName, snapshotInfoD.getName())) {
assertNotNull(rcD);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
import org.apache.hadoop.ozone.om.service.SnapshotDeletingService;
import org.apache.ozone.test.GenericTestUtils;
import org.apache.ozone.test.tag.Flaky;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
Expand Down Expand Up @@ -421,7 +422,7 @@ public void testSnapshotWithFSO() throws Exception {
assertTableRowCount(renamedTable, 4);
assertTableRowCount(deletedDirTable, 3);

ReferenceCounted<OmSnapshot> rcSnap1 =
UncheckedAutoCloseableSupplier<OmSnapshot> rcSnap1 =
om.getOmSnapshotManager().getSnapshot(
VOLUME_NAME, BUCKET_NAME_FSO, "snap1");
OmSnapshot snap1 = rcSnap1.get();
Expand Down Expand Up @@ -613,8 +614,9 @@ public void testParallelExcecutionOfKeyDeletionAndSnapshotDeletion() throws Exce
List<Table.KeyValue<String, String>> renamesKeyEntries;
List<Table.KeyValue<String, List<OmKeyInfo>>> deletedKeyEntries;
List<Table.KeyValue<String, OmKeyInfo>> deletedDirEntries;
try (ReferenceCounted<OmSnapshot> snapshot = om.getOmSnapshotManager().getSnapshot(testBucket.getVolumeName(),
testBucket.getName(), testBucket.getName() + "snap2")) {
try (UncheckedAutoCloseableSupplier<OmSnapshot> snapshot =
om.getOmSnapshotManager().getSnapshot(testBucket.getVolumeName(), testBucket.getName(),
testBucket.getName() + "snap2")) {
renamesKeyEntries = snapshot.get().getKeyManager().getRenamesKeyEntries(testBucket.getVolumeName(),
testBucket.getName(), "", 1000);
deletedKeyEntries = snapshot.get().getKeyManager().getDeletedKeyEntries(testBucket.getVolumeName(),
Expand Down Expand Up @@ -649,8 +651,9 @@ public void testParallelExcecutionOfKeyDeletionAndSnapshotDeletion() throws Exce
Future<?> future = snapshotDeletingThread.submit(snapshotDeletionRunnable);
GenericTestUtils.waitFor(snapshotDeletionStarted::get, 1000, 30000);
future.get();
try (ReferenceCounted<OmSnapshot> snapshot = om.getOmSnapshotManager().getSnapshot(testBucket.getVolumeName(),
testBucket.getName(), testBucket.getName() + "snap2")) {
try (UncheckedAutoCloseableSupplier<OmSnapshot> snapshot =
om.getOmSnapshotManager().getSnapshot(testBucket.getVolumeName(), testBucket.getName(),
testBucket.getName() + "snap2")) {
Assertions.assertEquals(Collections.emptyList(),
snapshot.get().getKeyManager().getRenamesKeyEntries(testBucket.getVolumeName(),
testBucket.getName(), "", 1000));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@
import org.apache.hadoop.ozone.om.protocolPB.OzoneManagerProtocolClientSideTranslatorPB;
import org.apache.hadoop.ozone.om.request.file.OMFileRequest;
import org.apache.hadoop.ozone.om.request.util.OMMultipartUploadUtils;
import org.apache.hadoop.ozone.om.snapshot.ReferenceCounted;
import org.apache.hadoop.ozone.om.snapshot.SnapshotUtils;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ExpiredMultipartUploadInfo;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.ExpiredMultipartUploadsBucket;
Expand All @@ -124,6 +123,7 @@
import org.apache.hadoop.util.Time;
import org.apache.ozone.compaction.log.CompactionLogEntry;
import org.apache.ratis.util.ExitUtils;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.eclipse.jetty.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -1351,7 +1351,7 @@ public PendingKeysDeletion getPendingDeletionKeys(final int keyCount,
continue;
}
// Get the latest snapshot in snapshot path.
try (ReferenceCounted<OmSnapshot> rcLatestSnapshot = previousSnapshotInfo == null ? null :
try (UncheckedAutoCloseableSupplier<OmSnapshot> rcLatestSnapshot = previousSnapshotInfo == null ? null :
omSnapshotManager.getSnapshot(previousSnapshotInfo.getVolumeName(),
previousSnapshotInfo.getBucketName(), previousSnapshotInfo.getName())) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@
import org.apache.hadoop.ozone.om.helpers.SnapshotDiffJob;
import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
import org.apache.hadoop.ozone.om.service.SnapshotDiffCleanupService;
import org.apache.hadoop.ozone.om.snapshot.ReferenceCounted;
import org.apache.hadoop.ozone.om.snapshot.SnapshotCache;
import org.apache.hadoop.ozone.om.snapshot.SnapshotDiffManager;
import org.apache.hadoop.ozone.om.snapshot.SnapshotUtils;
Expand All @@ -102,6 +101,7 @@
import org.apache.hadoop.ozone.snapshot.SnapshotDiffResponse;
import org.apache.ozone.rocksdiff.RocksDBCheckpointDiffer;
import org.apache.ratis.util.function.CheckedFunction;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.rocksdb.ColumnFamilyDescriptor;
import org.rocksdb.ColumnFamilyHandle;
import org.rocksdb.RocksDBException;
Expand Down Expand Up @@ -604,7 +604,7 @@ private static void deleteKeysFromDelKeyTableInSnapshotScope(

// Get OmSnapshot if the keyName has ".snapshot" key indicator
@SuppressWarnings("unchecked")
public ReferenceCounted<IOmMetadataReader> getActiveFsMetadataOrSnapshot(
public UncheckedAutoCloseableSupplier<IOmMetadataReader> getActiveFsMetadataOrSnapshot(
String volumeName,
String bucketName,
String keyName) throws IOException {
Expand All @@ -622,28 +622,28 @@ public ReferenceCounted<IOmMetadataReader> getActiveFsMetadataOrSnapshot(
bucketName), false, false);
volumeName = resolvedBucket.realVolume();
bucketName = resolvedBucket.realBucket();
return (ReferenceCounted<IOmMetadataReader>) (ReferenceCounted<?>)
return (UncheckedAutoCloseableSupplier<IOmMetadataReader>) (UncheckedAutoCloseableSupplier<?>)
getActiveSnapshot(volumeName, bucketName, snapshotName);
} else {
return ozoneManager.getOmMetadataReader();
}
}

public ReferenceCounted<OmSnapshot> getActiveSnapshot(
public UncheckedAutoCloseableSupplier<OmSnapshot> getActiveSnapshot(
String volumeName,
String bucketName,
String snapshotName) throws IOException {
return getSnapshot(volumeName, bucketName, snapshotName, false);
}

public ReferenceCounted<OmSnapshot> getSnapshot(
public UncheckedAutoCloseableSupplier<OmSnapshot> getSnapshot(
String volumeName,
String bucketName,
String snapshotName) throws IOException {
return getSnapshot(volumeName, bucketName, snapshotName, true);
}

private ReferenceCounted<OmSnapshot> getSnapshot(
private UncheckedAutoCloseableSupplier<OmSnapshot> getSnapshot(
String volumeName,
String bucketName,
String snapshotName,
Expand All @@ -659,7 +659,7 @@ private ReferenceCounted<OmSnapshot> getSnapshot(
return getSnapshot(snapshotTableKey, skipActiveCheck);
}

private ReferenceCounted<OmSnapshot> getSnapshot(String snapshotTableKey, boolean skipActiveCheck)
private UncheckedAutoCloseableSupplier<OmSnapshot> getSnapshot(String snapshotTableKey, boolean skipActiveCheck)
throws IOException {
SnapshotInfo snapshotInfo = SnapshotUtils.getSnapshotInfo(ozoneManager, snapshotTableKey);
// Block FS API reads when snapshot is not active.
Expand Down Expand Up @@ -710,7 +710,7 @@ public static boolean areSnapshotChangesFlushedToDB(OMMetadataManager metadataMa
* This should only be used for API calls initiated by background service e.g. purgeKeys, purgeSnapshot,
* snapshotMoveDeletedKeys, and SetSnapshotProperty.
*/
public ReferenceCounted<OmSnapshot> getSnapshot(UUID snapshotId) throws IOException {
public UncheckedAutoCloseableSupplier<OmSnapshot> getSnapshot(UUID snapshotId) throws IOException {
return snapshotCache.get(snapshotId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,6 @@
import org.apache.hadoop.ozone.om.service.OMRangerBGSyncService;
import org.apache.hadoop.ozone.om.service.QuotaRepairTask;
import org.apache.hadoop.ozone.om.snapshot.OmSnapshotUtils;
import org.apache.hadoop.ozone.om.snapshot.ReferenceCounted;
import org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature;
import org.apache.hadoop.ozone.om.upgrade.OMLayoutVersionManager;
import org.apache.hadoop.ozone.om.upgrade.OMUpgradeFinalizer;
Expand Down Expand Up @@ -339,6 +338,7 @@
import org.apache.ratis.util.ExitUtils;
import org.apache.ratis.util.FileUtils;
import org.apache.ratis.util.LifeCycle;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -490,9 +490,9 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
private IAccessAuthorizer accessAuthorizer;
// This metadata reader points to the active filesystem
private OmMetadataReader omMetadataReader;
// Wrap active DB metadata reader in ReferenceCounted once to avoid
// Wrap active DB metadata reader in UncheckedAutoCloseableSupplier once to avoid
// instance creation every single time.
private ReferenceCounted<IOmMetadataReader> rcOmMetadataReader;
private UncheckedAutoCloseableSupplier<IOmMetadataReader> rcOmMetadataReader;
private OmSnapshotManager omSnapshotManager;

@SuppressWarnings("methodlength")
Expand Down Expand Up @@ -963,7 +963,17 @@ private void instantiateServices(boolean withNewSnapshot) throws IOException {
this, LOG, AUDIT, metrics, accessAuthorizer);
// Active DB's OmMetadataReader instance does not need to be reference
// counted, but it still needs to be wrapped to be consistent.
rcOmMetadataReader = new ReferenceCounted<>(omMetadataReader, true, null);
rcOmMetadataReader = new UncheckedAutoCloseableSupplier<IOmMetadataReader>() {
@Override
public IOmMetadataReader get() {
return omMetadataReader;
}

@Override
public void close() {

}
};

// Reload snapshot feature config flag
fsSnapshotEnabled = configuration.getBoolean(
Expand Down Expand Up @@ -2714,7 +2724,7 @@ public boolean getAllowListAllVolumes() {
return allowListAllVolumes;
}

public ReferenceCounted<IOmMetadataReader> getOmMetadataReader() {
public UncheckedAutoCloseableSupplier<IOmMetadataReader> getOmMetadataReader() {
return rcOmMetadataReader;
}

Expand Down Expand Up @@ -2984,7 +2994,7 @@ public OmBucketInfo getBucketInfo(String volume, String bucket)
*/
@Override
public OmKeyInfo lookupKey(OmKeyArgs args) throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader = getReader(args)) {
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader = getReader(args)) {
return rcReader.get().lookupKey(args);
}
}
Expand All @@ -2996,7 +3006,7 @@ public OmKeyInfo lookupKey(OmKeyArgs args) throws IOException {
public KeyInfoWithVolumeContext getKeyInfo(final OmKeyArgs args,
boolean assumeS3Context)
throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader = getReader(args)) {
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader = getReader(args)) {
return rcReader.get().getKeyInfo(args, assumeS3Context);
}
}
Expand All @@ -3008,7 +3018,7 @@ public KeyInfoWithVolumeContext getKeyInfo(final OmKeyArgs args,
public ListKeysResult listKeys(String volumeName, String bucketName,
String startKey, String keyPrefix, int maxKeys)
throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader =
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader =
getReader(volumeName, bucketName, keyPrefix)) {
return rcReader.get().listKeys(
volumeName, bucketName, startKey, keyPrefix, maxKeys);
Expand Down Expand Up @@ -3841,7 +3851,7 @@ public OmMultipartUploadList listMultipartUploads(String volumeName,
*/
@Override
public OzoneFileStatus getFileStatus(OmKeyArgs args) throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader =
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader =
getReader(args)) {
return rcReader.get().getFileStatus(args);
}
Expand All @@ -3852,7 +3862,7 @@ public OzoneFileStatus getFileStatus(OmKeyArgs args) throws IOException {
*/
@Override
public OmKeyInfo lookupFile(OmKeyArgs args) throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader =
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader =
getReader(args)) {
return rcReader.get().lookupFile(args);
}
Expand All @@ -3872,7 +3882,7 @@ public List<OzoneFileStatus> listStatus(OmKeyArgs args, boolean recursive,
public List<OzoneFileStatus> listStatus(OmKeyArgs args, boolean recursive,
String startKey, long numEntries, boolean allowPartialPrefixes)
throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader =
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader =
getReader(args)) {
return rcReader.get().listStatus(
args, recursive, startKey, numEntries, allowPartialPrefixes);
Expand All @@ -3896,7 +3906,7 @@ public List<OzoneFileStatusLight> listStatusLight(OmKeyArgs args,
*/
@Override
public List<OzoneAcl> getAcl(OzoneObj obj) throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader =
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader =
getReader(obj)) {
return rcReader.get().getAcl(obj);
}
Expand Down Expand Up @@ -4860,7 +4870,7 @@ public void startQuotaRepair(List<String> buckets) throws IOException {
@Override
public Map<String, String> getObjectTagging(final OmKeyArgs args)
throws IOException {
try (ReferenceCounted<IOmMetadataReader> rcReader = getReader(args)) {
try (UncheckedAutoCloseableSupplier<IOmMetadataReader> rcReader = getReader(args)) {
return rcReader.get().getObjectTagging(args);
}
}
Expand Down Expand Up @@ -4947,9 +4957,9 @@ public static HddsProtos.OzoneManagerDetailsProto getOmDetailsProto(
* Caller is responsible of closing the return value.
* Using try-with-resources is recommended.
* @param keyArgs OmKeyArgs
* @return ReferenceCounted<IOmMetadataReader, SnapshotCache>
* @return UncheckedAutoCloseableSupplier<IOmMetadataReader, SnapshotCache>
*/
private ReferenceCounted<IOmMetadataReader> getReader(OmKeyArgs keyArgs)
private UncheckedAutoCloseableSupplier<IOmMetadataReader> getReader(OmKeyArgs keyArgs)
throws IOException {
return omSnapshotManager.getActiveFsMetadataOrSnapshot(
keyArgs.getVolumeName(), keyArgs.getBucketName(), keyArgs.getKeyName());
Expand All @@ -4962,9 +4972,9 @@ private ReferenceCounted<IOmMetadataReader> getReader(OmKeyArgs keyArgs)
* @param volumeName volume name
* @param bucketName bucket name
* @param key key path
* @return ReferenceCounted<IOmMetadataReader, SnapshotCache>
* @return UncheckedAutoCloseableSupplier<IOmMetadataReader, SnapshotCache>
*/
private ReferenceCounted<IOmMetadataReader> getReader(
private UncheckedAutoCloseableSupplier<IOmMetadataReader> getReader(
String volumeName, String bucketName, String key) throws IOException {
return omSnapshotManager.getActiveFsMetadataOrSnapshot(
volumeName, bucketName, key);
Expand All @@ -4975,9 +4985,9 @@ private ReferenceCounted<IOmMetadataReader> getReader(
* Caller is responsible of closing the return value.
* Using try-with-resources is recommended.
* @param ozoneObj OzoneObj
* @return ReferenceCounted<IOmMetadataReader, SnapshotCache>
* @return UncheckedAutoCloseableSupplier<IOmMetadataReader, SnapshotCache>
*/
private ReferenceCounted<IOmMetadataReader> getReader(OzoneObj ozoneObj)
private UncheckedAutoCloseableSupplier<IOmMetadataReader> getReader(OzoneObj ozoneObj)
throws IOException {
return omSnapshotManager.getActiveFsMetadataOrSnapshot(
ozoneObj.getVolumeName(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
import org.apache.hadoop.ozone.om.lock.OMLockDetails;
import org.apache.hadoop.ozone.om.snapshot.ReferenceCounted;
import org.apache.ratis.util.function.UncheckedAutoCloseableSupplier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -190,7 +190,7 @@ public BackgroundTaskResult call() throws Exception {
snapshotInfo.getBucketName());

try (
ReferenceCounted<OmSnapshot> snapshotMetadataReader =
UncheckedAutoCloseableSupplier<OmSnapshot> snapshotMetadataReader =
snapshotManager.get().getActiveSnapshot(
snapshotInfo.getVolumeName(),
snapshotInfo.getBucketName(),
Expand Down
Loading